2017-07-20 2 views
1

Ich habe ein Problem Lambdifing eine Funktion, die ein großes Array erwartet. Ein vereinfachtes Code das gleiche Problem zu replizieren ist:Sympy: Lambdify-Funktion mit großem Array-Eingang

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

, die den folgenden Fehler gibt:

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 

Ich nehme an sympy irgendwann die Argumente abflacht und damit bewirkt, dass dieses Problem.

Ich kann mir keinen guten Weg vorstellen.

Antwort

0

Offenbar Python 3.7 (die im Jahr 2018 veröffentlicht wird), wird removing diese Beschränkung sein. Ich weiß, dass dir das momentan nicht weiterhilft (es sei denn, du willst auf einem dev-Build von Python laufen), aber zumindest gibt es Hoffnung für die Zukunft.