SUM不起作用

时间:2013-07-31 09:25:50

标签: python numpy sum

我在PYTHON中编写了一个函数,但是我发现SUM在它中无法正常工作。

def func(a,*b):
    c = np.array([1,a,a**2,a**3])
    d = np.array(b)
    return sum(c*d)


a = 10
b = [0.1,0.2,0.3,0.4]

aa = np.array([1,a,a**2,a**3])
bb = np.array(b)
c = func(a,b)

print sum(aa*bb),c

代码的输出为432.1 [ 1.00000000e-01 2.00000000e+00 3.00000000e+01 4.00000000e+02]

有谁知道SUM在这里发生了什么?

1 个答案:

答案 0 :(得分:4)

您的func函数签名使用b作为一个包含所有标记,将*捕获为参数列表。这使得b列表中包含一个参数。但要定义bb,你不要这样做;你传入只是列表。

要么:

bb = np.array([b])

或做:

def func(a, b):
    c = np.array([1,a,a**2,a**3])
    d = np.array(b)
    return sum(c*d)

def func(a, *b):
    c = np.array([1,a,a**2,a**3])
    d = np.array(b[0])
    return sum(c*d)

使两个代码路径等效。