Numpy 添加多个数组

Fir*_*zen 1 python numpy array-broadcasting

有没有一种方法,以增加在单个操作(而不是总和)多个阵列在一起吗?显然,np.sum并且np.add是不同的操作,但是,我现在正在努力解决的问题是np.add一次只需要两个数组。我可以利用

output = 0
for arr in arr_list:
    output = output + array
Run Code Online (Sandbox Code Playgroud)

或者

output = 0
for arr in arr_list:
    output = np.add(output, array)
Run Code Online (Sandbox Code Playgroud)

是的,这是可行的。但是,如果我可以简单地做一些变体就好了

output = np.add_multiple(arr_list)
Run Code Online (Sandbox Code Playgroud)

这存在吗?

编辑:我最初没有说清楚。我特别要求,它的功能要求一个阵列被构建阵列,如我的数组相等尺寸的不和要求的广播,例如:

a = np.arange(3).reshape(1,3)
b = np.arange(9).reshape(3,3)

a, b = a[:,:,None,None], b[None,None,:,:]
Run Code Online (Sandbox Code Playgroud)

这些工作:

a + b        # Works
np.add(a, b) # Works
Run Code Online (Sandbox Code Playgroud)

这些没有,并以相同的例外失败:

np.sum([a, b], axis = 0)
np.add.reduce([a, b])

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: could not broadcast input array from shape (3,1,1) into shape (1)
Run Code Online (Sandbox Code Playgroud)

GZ0*_*GZ0 7

您可以只使用 Python 的sum内置功能:

output = sum(arr_list)
Run Code Online (Sandbox Code Playgroud)

对于许多其他numpy功能,np.<ufunc>.reduce可以按@hpaulj 所示使用。