2013-08-28 83 views
8

我想計算積分圖像。例如如何獲得numpy數組的累積總和

a=array([(1,2,3),(4,5,6)]) 
b = a.cumsum(axis=0) 

這將產生另一個陣列b.Can我執行就地的cumsum。如果不 。是否有任何其他的方法來做到這一點

+0

我不確定如果不是數組,你期望輸出的值是多少。你能精確嗎? – Lukasz

回答

9

你必須傳遞參數out

np.cumsum(a, axis=1, out=a) 

OBS:你的數組實際上是一個2- D數組,因此您可以使用axis=0沿着行進行求和,並使用axis=1對列進行求和。

+0

這與a = np.cumsum(a,axis = 1)是否相同。我怎樣才能確認'a'是原來的那個 – Samuel

+0

@Samuel [在它的文檔中指出](http://docs.scipy.org/doc/numpy/reference/generated/numpy.cumsum.html)這個函數返回一個新的數組,但我不知道如何檢查它是否是同一個對象,對於我們可以使用'hash()'的其他對象,但是np.ndarray不可用... –

+1

它可以通過地址'a.data'。我已經證實,它是在你的方式就地感謝 – Samuel

-4

試試這個使用numpy的直接numpy.cumsum(a)

a=array([(1,2,3)]) 
b = np.cumsum(a) 
print b 
>>array([1,3,6]) 
+0

無法在我的電腦上工作。我的pyton版本是2.6.6 – Samuel

+0

這是錯誤的,在這裏沒有修改。 –