Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.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 寻求求和(西格玛)函数的帮助_Python_Numpy_Sum - Fatal编程技术网

Python 寻求求和(西格玛)函数的帮助

Python 寻求求和(西格玛)函数的帮助,python,numpy,sum,Python,Numpy,Sum,需要帮助来计算: 因此,y的总数等于x的个数,每个y由一个x和几个a计算。 下面是我的代码列表,它给出了a0的正确结果。计算这个的简单方法是什么?也许另一个版本也可以验证结果 非常感谢 import numpy as np import matplotlib.pyplot as plt a = np.array([1,2,3,4],float) # here we can give several a b = np.asarray(list(enumerate(a))) x = np.lin

需要帮助来计算:

因此,y的总数等于x的个数,每个y由一个x和几个a计算。 下面是我的代码列表,它给出了a0的正确结果。计算这个的简单方法是什么?也许另一个版本也可以验证结果

非常感谢

import numpy as np
import matplotlib.pyplot as plt

a = np.array([1,2,3,4],float) # here we can give several a
b = np.asarray(list(enumerate(a)))
x = np.linspace(0.0,1.0,10) 
y1 = [] 

for r in x:
    y1.append(np.exp(np.sum((1-r)**2*a*((2*b[:,0]+1)*r-1+r)*(r-1+r)**(b[:,0]-1)))) 

y1=np.asarray(y1)

你可以用numpy写几乎完全相同的内容:

def f(x, a):
    x, a = np.asanyarray(x), np.asanyarray(a)
    x = x[:, None]        # create new dimension to sum along
    i = np.arange(len(a)) # create counter
    return np.sum((1-x)**2 * a * ((2*i + 1) * x - (1-x)) * (x - (1-x))**(i-1), axis=-1)

作为旁注:有一些明显的代数简化,你可以利用。

你应该做向量乘法。您已经有了np数组。非常感谢您的回答。我有一些问题,1,这里的x,a是元组,而每个组件是数组吗?2,axis=-1沿所有轴求和的含义是什么?@Z.Nie 1)不,x是一个二维数组,因此可以将单个元素称为x[i,j]。但是,在这种情况下,第二个维度是1,因此
j
必须为零(在这种情况下,不是一般情况下)
axis=-1
表示沿最后一个轴的和,因此
x
的原始尺寸(即轴0)保持不变。示例中的最后一个维度由
i
a
填充,它们与该轴一起折叠。谢谢。另一个问题。在您的代码中,如果返回((1-x)**2*a*((2*i+1)*x-(1-x))*(x-(1-x))**(i-1)),而不是求和,它将给出一个形状为(10,4)的数组。但当我定义相同的x,a,I并计算((1-x)**2*a*((2*I+1)*x-(1-x))*(x-(1-x))**(I-1)),它给出了一个错误。如何解释这种差异?@Z.Nie您可能遗漏了
x=x[:,None]
这将在
None
位置创建一个新轴,因此
x
的新形状为(10,1)。计算表达式时,所有具有较小ndim的操作数都将在左侧用新轴填充,因此
a
i
的形状都变为(1,4)。(10,1)和(1,4)然后被广播到(10,4)。事物可广播的规则是,每个维度必须与其他操作数的相应维度匹配,或者为1.OK。谢谢。