ITADN
JuliaPy/PythonCall.jl
JuliaPy/PythonCall.jl · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

PythonCall.jl logo
PythonCall & JuliaCall

Project Status: Active – The project has reached a stable, usable state and is being actively developed. Stable Documentation Dev Documentation Tests Codecov PkgEval

Python®Julia 无缝和谐地结合在一起:

  • 通过对称接口,从 Julia 调用 Python 代码,从 Python 调用 Julia 代码。
  • 语法简洁,Python 代码看起来像 Python,Julia 代码看起来像 Julia。
  • Julia 与 Python 之间直观且灵活的转换:任何内容都可以转换,由您掌控。
  • 数值数组在两个方向上的快速无拷贝转换:从 Julia 修改 Python 数组(例如 bytesarray.arraynumpy.ndarray),或从 Python 修改 Julia 数组。
  • 有用的包装器:将 Python 序列、字典、数组、数据框和 IO 流解释为其对应的 Julia 对象,反之亦然。
  • 美观的堆栈跟踪。
  • 支持现代系统:已在 Windows、MacOS 和 Linux 上测试;64 位;Julia 1.10 及以上版本和 Python 3.10 及以上版本。

⭐ 如果您喜欢这个项目,给一个 GitHub star 将不胜感激。 ⭐

要开始使用,请阅读 documentation

示例 1:从 Julia 调用 Python

在本示例中,我们使用 Julia 模块 PythonCall 从一个 Pluto 笔记本中检查 Iris 数据集:

  • 我们使用 RDatasets 将 Iris 数据集加载为 Julia DataFrame
  • 我们使用 pytable(df) 将其转换为 Python Pandas DataFrame
  • 我们使用 Python 包 Seaborn 生成配对图,该图会自动显示。

Seaborn example screenshot

示例 2:从 Python 调用 Julia

在本示例中,我们从 IPython notebook 中使用 Python 模块 JuliaCall 来训练一个简单的神经网络:

  • 我们使用 Python 的 Numpy 生成一些随机训练数据。
  • 我们使用 Julia 的 Flux 构建并训练一个神经网络模型。
  • 我们使用 Python 的 MatPlotLib 绘制模型的一些样本输出。

Flux example screenshot

那么 PyCall 呢?

现有软件包 PyCall 是另一个类似的 Python 接口。在此我们指出一些关键差异:

  • PythonCall 支持 Julia 与 Python 之间更广泛的转换,且转换机制是可扩展的。
  • PythonCall 在转换时默认从不复制可变对象,而是直接包装可变对象。这意味着修改转换后的对象会修改原始对象,并且转换速度更快。
  • PythonCall 通常不会自动将结果转换为 Julia 值,而是将其保留为 Python 对象。这使得使用这些对象进行 Python 风格的操作(例如访问方法)变得更加容易,并且是类型稳定的。
  • PythonCall 使用 CondaPkg 为每个使用它的 Julia 项目安装依赖项到独立的 Conda 环境中。这意味着每个 Julia 项目可以拥有一套隔离的 Python 依赖项。