gpt4 book ai didi

python - 将 numpy 与 sympy 相结合

转载 作者:太空狗 更新时间:2023-10-29 21:29:45 25 4
gpt4 key购买 nike

我有以下代码:

p = classp();
for i in range(1,10):
x = numpy.array([[2],[4],[5]])
print p.update(x)

class classp:
def __init__(self):
self.mymodel = array([2*x[1]], [3*x[0]], [x[2]]);
def update(self, x):
return self.mymodel #replace x(0)...x(1) with the given parameter

我的问题与上面的代码有关,如果可能的话,我想使用 sympy 定义一个模型,然后在更新函数中用 x 值替换 sympy 变量。可能吗?我该怎么做?

最佳答案

我可以向您提出两个解决方案。

首先,DeferedVector 是为与 lambdify 一起使用而创建的:

In [1]: from sympy.matrices import DeferredVector

In [2]: v = DeferredVector('v')

In [3]: func = lambdify(v, Matrix([v[1], 2*v[2]]))

In [4]: func(np.array([10,20,30]))
Out[4]:
[[20]
[60]]

但是 lambdify 对我来说太神奇了。

另一种选择是使用 .subs 方法:

In [11]: x1, x2, x3 = symbols('x1:4')

In [12]: m = Matrix([x2,2*x1,x3/2])

In [13]: m.subs({x1:10, x2:20, x3:30})
Out[13]:
⎡20⎤
⎢ ⎥
⎢20⎥
⎢ ⎥
⎣15⎦

您可以像这样为替换创建字典:

dict(zip(symbols('x1:4'), your_value_array))

不要忘记所有返回对象都是 sympy 矩阵。要将它们转换为 numpy 数组,只需使用 np.array(the_matrix_in_question) 并且不要忘记指定 dtype,否则它将默认为 dtype=object.

关于python - 将 numpy 与 sympy 相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10129213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com