我有一个数组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,:])
答案 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])