gpt4 book ai didi

python - 使用数组输入的 Sympy Lambdify

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

我正在尝试提供一个数组作为输入,并期望一个数组作为以下代码的输出。

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()

但是得到如下错误。

TypeError: <lambda>() takes exactly 3 arguments (13 given)

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

最佳答案

<强>1。解决方案:您的问题是,函数 T 需要一个值,但您正在分发一个列表。试试这个而不是 print T(data[0],[0.29,4.5]) 来获取结果列表:

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

或者使用包装函数:

def arrayT(array, params):
return [T(val, params) for val in array]

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

<强>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)

关于python - 使用数组输入的 Sympy Lambdify,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25014667/

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