Arrays Sympy:具有大数组输入的Lambdify函数
我在修改需要大数组的函数时遇到问题。复制相同问题的简化代码是:Arrays Sympy:具有大数组输入的Lambdify函数,arrays,sympy,lambdify,Arrays,Sympy,Lambdify,我在修改需要大数组的函数时遇到问题。复制相同问题的简化代码是: from sympy import * def fun(x): f = [] for i,x_i in enumerate(x): f.append(x_i**i) return Matrix(f) N = 256 x = Matrix([symbols("x_%s"%i) for i in range(N)]) fun_lam = lambdify((x,),fun(x)) 这会产生以下错
from sympy import *
def fun(x):
f = []
for i,x_i in enumerate(x):
f.append(x_i**i)
return Matrix(f)
N = 256
x = Matrix([symbols("x_%s"%i) for i in range(N)])
fun_lam = lambdify((x,),fun(x))
这会产生以下错误:
Traceback (most recent call last):
File "bin/problem-lambdify.py", line 13, in <module>
fun_lam = lambdify((x,),fun(x))
File ".../env/lib/python3.4/site-packages/sympy-1.1rc1-py3.4.egg/sympy/utilities/lambdify.py", line 434, in lambdify
func = eval(lstr, namespace)
File "<string>", line 1
SyntaxError: more than 255 arguments
回溯(最近一次呼叫最后一次):
文件“bin/problem lambdify.py”,第13行,在
fun_lam=lambdify((x,),fun(x))
lambdify中的文件“../env/lib/python3.4/site packages/sympy-1.1rc1-py3.4.egg/sympy/utilities/lambdify.py”,第434行
func=eval(lstr,名称空间)
文件“”,第1行
SyntaxError:超过255个参数
我想Symphy在某个点上使论点变得平淡,因此导致了这个问题
我想不出一个好办法来解决这个问题。显然,Python 3.7(将于2018年发布)将是这个限制。我知道这现在对您没有帮助(除非您想在Python的开发版本上运行),但至少对未来有希望 我遭受了很多痛苦,但我找到了解决办法。下面是一个简单的例子
import sympy as sym
import numpy as np
A = sym.MatrixSymbol('A', 1, 260)
f = np.prod(A)
func = sym.lambdify(A, f)
aa = np.ones((1, 260))
print(func(aa))
诀窍在于您不创建符号数组,而是创建矩阵符号。但我非常期待在Sympy中实现lambdify just normal array