如何在Julia中使用SymPy对字符串列表进行模式化? [英] How to lambdify a list of strings with SymPy in Julia?

查看:0
本文介绍了如何在Julia中使用SymPy对字符串列表进行模式化?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Julia中使用SymPy,如何转换示例输入

feature_names = ["1", "x", "y", "z", "x^2", "x y", "x z", "y^2", "y z", "z^2"]

转换为可调用的方法f(x, y, z),该方法返回以下表达式的计算结果:

julia >>> f(1, 2, 3)
julia >>> 10-element Vector{float64}:
          [1, 1, 2, 3, 1, 2, 3, 4, 6, 9]

推荐答案

这不完全是您所要求的,因为sympify这样的表达式不适用于sympify,所以我不得不根据需要添加*,但使用sympifyfree_symbols可以自动执行此操作:

feature_names = ["1", "x", "y", "z", "x^2", "x*y", "x*z", "y^2", "y*z", "z^2"]

using SymPy
function F(feature_names)

    xs = sympy.sympify.(feature_names)
    vars = free_symbols(xs)
    function(as...)
        subs.(xs, (vars .=> as)...)
    end
end

λ = F(feature_names)
λ(1,2,3)

Lamda中变量的顺序是调用sortperm字符串符号来确定的,因为free_symbols就是这样对事物进行排序的。

这篇关于如何在Julia中使用SymPy对字符串列表进行模式化?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆