Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python NumPy数组上的和辛表达式_Python_Numpy_Sympy - Fatal编程技术网

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)

正是我需要的。谢谢@毛里西奥很棒。。。既然你是新来的:别忘了,你也可以投票选出你想要的答案和问题……)