首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sympy:具有大型数组输入的Lambdify函数

Sympy:具有大型数组输入的Lambdify函数
EN

Stack Overflow用户
提问于 2017-07-21 00:38:58
回答 2查看 379关注 0票数 1

我在定义一个需要一个大数组的函数时遇到了问题。复制相同问题的简化代码是:

代码语言:javascript
复制
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))

这会给出以下错误:

代码语言:javascript
复制
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

我认为,在某些时候,渐近会使论点变得扁平,从而导致这个问题。

我想不出一个好办法来解决这个问题。

EN

回答 2

Stack Overflow用户

发布于 2017-07-22 04:49:50

显然,Python3.7(将于2018年发布)将removing这一限制。我知道这现在对您没有帮助(除非您想在Python的开发版本上运行),但至少对未来有希望。

票数 1
EN

Stack Overflow用户

发布于 2018-08-02 00:52:41

我吃了很多苦头,但我找到了解决办法。下面是一个简单的例子。

代码语言:javascript
复制
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))

诀窍是不创建符号数组,而是创建一个矩阵符号。但是我非常期待通过传递lambdify来实现Sympy中的普通数组。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45220567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档