在Julia中使用导入的Scipy函数时出现语法错误
解决Julia中调用Scipy Optimize minimize函数的语法错误问题
这个问题我之前也碰到过,核心原因就是Julia和Python的字典语法完全不一样——你写的{}在Julia里是早就废弃的旧数组语法,所以才会抛出那个错误。下面给你两种正确的写法:
方法1:用Julia原生的Dict构造字典
Julia里的字典是用Dict()来创建的,PyCall会自动把Julia的Dict转换成Python的dict传递给Scipy的函数,代码如下:
# 先导入整个scipy.optimize模块(比直接导入minimize更规范) julia> @pyimport scipy.optimize as so # 用Dict创建约束和选项参数 julia> so.minimize(f, x0, constraints=Dict("type" => "ineq", "fun" => g), options=Dict("maxiter" => 1000))
方法2:用PyCall的@py宏写Python风格字典
如果你更习惯Python的字典写法,可以用PyCall提供的@py宏,它能直接解析Python风格的语法:
julia> @pyimport scipy.optimize as so # 用@py宏包裹Python风格的字典 julia> so.minimize(f, x0, constraints=@py({"type": "ineq", "fun": g}), options=@py({"maxiter": 1000}))
另外补充一点:建议导入整个scipy.optimize模块而不是直接导入minimize函数,这样代码可读性更强,也能避免潜在的命名冲突问题。
内容的提问来源于stack exchange,提问作者maikkirapo
相关产品推荐
相关产品推荐

