Python NumPy数组上的和辛表达式
所以,如果我这样做Python NumPy数组上的和辛表达式,python,numpy,sympy,Python,Numpy,Sympy,所以,如果我这样做 import sympy as sp import numpy as np u = np.random.uniform(0, 1, 10) w, k = sp.symbols('w k') l = sum(1 - sp.log(k + w) + sp.exp(k + w) for k in u) 我得到了我想要的(作为w函数的u上的符号和)。然而,写出来会有用得多 f = 1 - sp.log(k + w) + sp.exp(k + w) l = sum(f for k i
import sympy as sp
import numpy as np
u = np.random.uniform(0, 1, 10)
w, k = sp.symbols('w k')
l = sum(1 - sp.log(k + w) + sp.exp(k + w) for k in u)
我得到了我想要的(作为w
函数的u
上的符号和)。然而,写出来会有用得多
f = 1 - sp.log(k + w) + sp.exp(k + w)
l = sum(f for k in u)
但是我得到了
10*exp(k + w) - 10*log(k + w) + 10
发生什么事了?有办法得到我想要的总数吗?(SymPy有几种对整数求和的方法,但我还没有找到一种用于数组的方法)(版本:Python 2.7.6、NumPy 1.8.1、SymPy 0.7.4.1)问题是,
f
没有对每个k
进行求值。试试这个:
sum([f.subs(dict(k=k)) for k in u])
它会给你正确的结果。其中,使用
subs()
强制对k
的每个值计算f
使f成为一个返回结果计算的函数是这里需要做的事情,以使其按您所拥有的方式工作
f = lambda k,w : 1 - sp.log(k + w) + sp.exp(k + w)
l = sum(f(k,w) for k in u)
正是我需要的。谢谢@毛里西奥很棒。。。既然你是新来的:别忘了,你也可以投票选出你想要的答案和问题……)