在Python中添加多维数组的所有元素

时间:2017-09-06 22:19:18

标签: python numpy matrix

我有一个数组A,它是x-by-y-by-z-by-w维。我想得到一个z维向量v,其中v的每个元素是控制v的坐标的A元素的总和。有没有办法我可以使用numpy做这个w / o循环?

以下是我将如何使用循环

for i in range(z):
   v[i] = np.sum(A[:,:,i,:])

1 个答案:

答案 0 :(得分:3)

您可以通过指定axis参数来对轴进行求和;在这里,您要保留第三个轴并折叠所有其他轴,因此只需使用axis=(0,1,3)

np.sum(A, axis=(0,1,3))

实施例

A = np.arange(24).reshape((2,2,3,2))

# for loop approach
z = A.shape[2]
v = np.empty(z)
for i in range(z):
    v[i] = np.sum(A[:,:,i,:])

v
# array([  76.,   92.,  108.])

# sum over axis
np.sum(A, axis=(0,1,3))
# array([ 76,  92, 108])