带数组输入的Sympy Lambdify

2024-05-13 06:52:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图给一个数组作为输入,并期望一个数组作为以下代码的输出。在

from sympy import symbols
from sympy.utilities.lambdify import lambdify
import os
from sympy import *
import numpy as np

text=open('expr.txt','r')
expr=text.read()
x,param1,param2=symbols('x param1 param2')
params=np.array([param1,param2])
T=lambdify((x,params),expr,modules='numpy')
data=np.genfromtxt('datafile.csv',delimiter=',')
print T(data[0],[0.29,4.5])
text.close()

但是得到以下错误。在

^{pr2}$

我该如何告诉sympy它是一个数组?提前谢谢。在


Tags: 代码textfromimportnumpydatanp数组
1条回答
网友
1楼 · 发布于 2024-05-13 06:52:54

1。解决方案: 你的问题是,函数T需要一个值,但是你给出了一个列表。请尝试此操作而不是print T(data[0],[0.29,4.5])以获取结果列表:

print [T(val,[0.29,4.5]) for val in data[0]]

或使用包装函数:

^{2}$

2。解决方案:你必须改变你的数学表达式。不知何故,sympy无法处理列表列表,因此请尝试以下操作:

expr = "2*y/z*(x**(z-1)-x**(-1-z/2))"
T=lambdify((x,y,z),expr,'numpy')

print T(data[0], 0.29, 4.5)

相关问题 更多 >