2015-10-28 176 views
1

我有两个相对类似的操作,我想知道该怎么做。2D阵列的Numpy求和

第一个更简单。我有一个numpy的阵列状

[[a,b,c,d], 
[e,f,g,h], 
[i,j,k,l]] 

我想总结列得:

[6,12,18,24] 

我知道我可以循环使用做到这一点:

for i in range(0,ROW_LENGTH): #ROW_LENGTH defined elsewhere 
    listsum[i]=list[:,i].sum() 

但这不可能是pythonic的方式,可以吗?


第二项任务是我需要做一些类似的3D数组。我假设这个解决方案是相似的。一个简单的例子是:

[[[a,b,c],[d,e,f],[g,h,i]], 
[[j,k,l],[m,n,o],[p,q,r]], 
[[s,t,u],[v,w,x],[y,z,_]]] 

对输出应该是:

[[a+j+s,b+k+t,c+l+u],[d+m+v,e+n+w,f+o+x],[g+p+y,h+q+z,i+r+_]] 

我希望理解为这两种技术将是一大福音,一般来说,对于如何我抓住python!

我要在这里链接到一个单独的问题我问了同一个项目:

+2

你知道在'np.sum'了'axis'参数?它可以让你非常有效地执行这些操作。 –

+0

WOW。是。究竟。所以我想要的是np.sum(list,axis = 0),对吗?你可以把这个答案形式,所以我可以upvote和选择?这也解决了我要链接到的其他问题,而不是产品。谢谢! –

+0

很高兴帮助 - 我已将此问题标记为重复,因此它可以帮助用户指导正确的答案。 –

回答

0

为了做到这一点,你可以使用numpy的的sum方法。

import numpy as np 
a = np.array([[1,2,3],[4,5,6],[7,8,9]]) 
a.sum(axis=0) 

这应该做的伎俩