2015-10-28 219 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) 

這應該做的伎倆