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