julia语言使用PyCall包调用Python代码及Python包

  Julia语言虽然好,但是包管理方面和生态环境感觉还有一点小小的缺陷,但是Julia可以调用Python丰富的包,用起来很方便。

 安装PyCall

  在安装之前先确认下Julia和Python的版本,我使用的稳定版本的 Julia1.6.7,Python版本是 Python3.10.9,并确认好已经下载了需要的Python包,还未下载的可以在终端输入:

pip install matplotlib
pip install sympy
pip install scipy

  使用Julia语言调用Python需要先下载 PyCall 包和 Conda包:

using Pkg
Pkg.add("PyCall")

 PyCall官网:GitHub - JuliaPy/PyCall.jl: Package to call Python functions from the Julia language 官网中一些示例代码是旧版本代码,个别细节需要做一些更改。 

我平时习惯在REPL交互解释器里使用 ] 符号进入包管理模式,随后

add PyCALL
Pkg Conda

 

 

退出包管理模式按一下 删除键 就可以。 

下载完PyCall包后,在Julia终端里配置下Python路径,这里需要定位到python.exe文件。

ENV["PYTHON"] = raw"C:\\GGBond\\your path\\python.exe"

 

随后再Julia终端输入:

Pkg.build("PaCall")

 

  这时候可以在Julia终端进入包管理模式,输入命令查看已安装的Julia包,此时PyCall包已安装完成:

status

 

在包管理模式输入 查看Julia包管理的命令

调用Python代码

 这是可以试用下官网示例代码:

1.调用Python的open函数

 这里和官网使用 @pywith 的版本不一样

using PyCall  
  
#=
调用Python的内置open函数来创建一个.txt文件
使用PyCall提供的字符串宏py"""来执行Python代码 
=#

 
py"""  
with open("GGboy.txt", "w") as f:  
    f.write("hello mr.Dick")  
"""


#=
旧版本代码
@pywith pybuiltin("open")("file.txt","w") as f begin
    f.write("hello")
end
=#

 生成的文件:

 

2.调用Python的math函数
using PyCall
math = pyimport("math")
a = math.sin(math.pi / 4) # returns ≈ 1/√2 = 0.70710678...
println(a)

 

 3.Julia中定义Python函数或类,并在Julia函数中使用函数
module MyModule  
  
using PyCall  
  
let  
    py"""  
    import numpy as np  
  
    def one(x):  
        return np.sin(x) ** 2 + np.cos(x) ** 2  
    """  
    global py_one  # 声明一个全局变量来存储Python函数  
    py_one = py"one"  # 将Python函数赋值给Julia全局变量  
end  
  
two(x) = py_one(x) + py_one(x)  
  
end 

#=
旧版本代码
module MyModule

using PyCall

function __init__()
    py"""
    import numpy as np

    def one(x):
        return np.sin(x) ** 2 + np.cos(x) ** 2
    """
end

two(x) = py"one"(x) + py"one"(x)

end
=#

 调用Python包

在调用Python包之前先确定好是否已经在Python环境配置好这些包

1.调用numpy
using PyCall  
  
# 执行多行Python代码来定义函数  
py"""  
import numpy as np  
  
def sinpi(x):  
    return np.sin(np.pi * x)  
"""  
  
# 调用刚才定义的Python函数  
result = py"sinpi(1)"  
  
# 显示结果  
println(result)


#=
旧版本代码
py"""
import numpy as np

def sinpi(x):
    return np.sin(np.pi * x)
"""
py"sinpi"(1)
=#

 

2.调用scipy
using PyCall  
  
so = pyimport("scipy.optimize")  
julia_func(x) = cos(x) - x   
root = so.newton(julia_func, 1.0)  
  
println(root)

#=
旧版本代码
so = pyimport("scipy.optimize")
so.newton(x -> cos(x) - x, 1)
=#

3.调用matplotlib
using PyCall  
  
plt = pyimport("matplotlib.pyplot")  
  
x = range(0, stop=2*pi, length=1000)  
y = sin.(3*x .+ 4*cos.(2*x))

plt.plot(x, y, color="red", linewidth=2.0, linestyle="--")  
  
plt.show()

#=
旧版本代码 
plt = pyimport("matplotlib.pyplot")
x = range(0;stop=2*pi,length=1000); y = sin.(3*x + 4*cos.(2*x));
plt.plot(x, y, color="red", linewidth=2.0, linestyle="--")
plt.show()
=#

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/431396.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电磁兼容(EMC):单、双面PCB板设计要点

目录 1 产品设计原则:性价比为第一要素 2 布局设计要点 3 布线设计要点 4 完整地平面不是最优方案 1 产品设计原则:性价比为第一要素 PCB在电磁兼容设计中通常是要求有完整的地和电源平面。但多层价格让对价格敏感的产品望而却步,只能采…

GPT本地化研究(JAVA版本)

1.我觉得gpt3 600多G个人是不可能部署得成功的,回想我自己个人不可能每一方面知识都知道,我只是知道最多的是我自己擅长的,百事通需要靠大公司才能解决,我们只是要关注这个gpt是哪个领域的, 我想做的是工业—>自动化gpt(貌似这个方向日本很专业了*_*) 它山之石可以攻玉 2.gp…

【设计模式 03】抽象工厂模式

一个具体的工厂,可以专门生产单一某一种东西,比如说只生产手机。但是一个品牌的手机有高端机、中端机之分,这些具体的属于某一档次的产品都需要单独建立一个工厂类,但是它们之间又彼此关联,因为都共同属于一个品牌。我…

视觉Transformers中的位置嵌入 - 研究与应用指南

视觉 Transformer 中位置嵌入背后的数学和代码简介。 自从 2017 年推出《Attention is All You Need》以来,Transformer 已成为自然语言处理 (NLP) 领域最先进的技术。 2021 年,An Image is Worth 16x16 Words 成功地将 Transformer 应用于计算机视觉任务…

【go语言开发】yaml文件配置和解析

本文主要介绍使用第三方库来对yaml文件配置和解析。首先安装yaml依赖库;然后yaml文件中配置各项值,并给出demo参考;最后解析yaml文件,由于yaml文件的配置在全局中可能需要,可定义全局变量Config,便于调用 文…

面试题HTML+CSS+网络+浏览器篇

文章目录 Css预处理sass less是什么?为什么使用他们怎么转换 less 为 css?重绘和回流是什么http 是什么?有什么特点HTTP 协议和 HTTPS 区别什么是 CSRF 攻击HTML5 新增的内容有哪些Css3 新增的特性flex VS grid清除浮动的方式有哪些&#xff…

SAR ADC学习笔记(3)

一、SAR ADC采样电路 1.采样网络的时域响应:采保信号 2.采样网络的KT/C噪声 3.采样抖动 采样开关的种类 1.单MOS管开关 2.传输门开关 3.栅极自举(Bootstrap)开关 结论:M4的衬底需要和B点短接,保证B点能够到达高压&…

完美解决Iframe嵌入帆软报表出现跨域cookie写不进去的问题

随着google chrome对第三方cookie的限制越来越狠,现在发现之前使用iframe嵌入的帆软报表已经不好使了。官方现在解决iframe嵌入帆软报表出现跨域导致cookie写不进去的方案是主推 统一主域名的方案(谷歌浏览器单点登录失败- FineReport帮助文档 - 全面的报表使用教程和学习资料…

大唐杯学习笔记:Day5

1.1 小区搜索 搜索流程 PLMN选择 自动模式:UE根据NAS的请求或自主地向NAS报告可用的PLMN 手动模式:通过手动选择一个可用的VPLMN获取正常服务 频点选择 5G NR中,3GPP主要指定了两个频率范围,一个是6GHZ以下,另一个是毫米波,分别称之为FR1和FR2。 N…

稀碎从零算法笔记Day5-LeetCode:轮转数组

题型:数组、数学、双指针 前言:LC说你得用三种方法做出来(悲) 链接:189. 轮转数组 - 力扣(LeetCode) 来源:LeetCode 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 …

专业145+总分410+西工大西北工业大学827信号与系统考研经验电子信息与通信工程,海航,真题,大纲,参考书。

经过一年的努力,分数终于出来。今年专业课827信号与系统145(很遗憾差了一点点满分,没有达到Jenny老师的最高要求),数一130,英语和政治也都比较平衡,总分410分,当然和信息通信考研Jen…

学习java第一天(下载并配置环境+写第一个java程序)

一.安装 1.下载 直接去官网上选择与你电脑符合的版本下载 官网链接Java Archive Downloads - Java SE 8u211 and later (拿我的为例 Windows x64版本) ​ 2.然后安装好exe(要让自己知道在哪) 3.配置环境 大佬链接&#xff1…

蓝桥杯前端Web赛道-新鲜的蔬菜

蓝桥杯前端Web赛道-新鲜的蔬菜 题目链接:1.新鲜的蔬菜 - 蓝桥云课 (lanqiao.cn) 题目要求如下: 其实很容易联想到使用flex布局,这是flex布局一种非常经典的骰子布局,推荐Flex 布局教程:实例篇 - 阮一峰的网络日志 (r…

Java基于SpringBoot网上超市的设计与实现论文

摘 要 网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。因此超市商品销售信…

鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:点击回弹效果)

设置组件点击时回弹效果。 说明: 从API Version 10开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 clickEffect clickEffect(value: ClickEffect | null) 设置当前组件点击回弹效果。 系统能力: SystemCapabilit…

SQL技巧笔记(一):连续3人的连号问题—— LeetCode601.体育馆的人流量

SQL 技巧笔记 前言:我发现大数据招聘岗位上的应聘流程都是需要先进行笔试,其中占比很大的部分是SQL题目,经过一段时间的学习之后,今天开了一个力扣年会员,我觉得我很有必要去多练习笔试题目,这些题目是有技…

Linux - 进程概念

1、冯诺依曼体系结构 我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系; 截至目前,我们所认识的计算机,都是有一个个的硬件组件组成: 输入单元:…

浏览器发出一个请求到收到响应步骤详解

前言 在网络通信中,浏览器向Web服务器发送HTTP请求消息的过程是一个复杂而精密的环节,涉及到URL解析、DNS解析、数据拆分、路由表规则和MAC头部添加等一系列步骤。本文将深入探讨这一过程的每个环节,帮助读者更全面地了解浏览器与Web服务器之…

肠道菌群参与利那洛肽对便秘型肠易激综合征 (IBS-C) 患者的影响:一项多中心、前瞻性、前后对照研究

谷禾健康 肠易激综合征 (IBS) 是一种普遍存在的、症状驱动的慢性疾病,其特征是腹部不适和排便不规律,估计影响全球 11.2% 的人口。这些患者中大约三分之一被诊断患有便秘型肠易激综合征(IBS-C),这是IBS 的一种亚型。 鉴…

JVM 第二部分-1(程序计数器,虚拟机栈,本地方法栈)

第二部分:运行时数据区 1.程序计数器: 全称是程序计数寄存器,像CPU的寄存器一样,存放线程的下一条指令的地址。每个线程都有一个 (区域小,执行速度快,不会有垃圾回收,也不会报oom错…