2013-08-28 11 views
8

Chcę obliczyć całkę obrazu. npJak uzyskać sumaryczną sumę numpy array w miejscu

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

To spowoduje kolejną tablicę b.Can I wykonanie cumsum w miejscu. Jeśli nie . Czy są jakieś inne sposoby aby to zrobić

+0

Nie jestem pewien, jakiej wartości wyjściowej oczekujesz, jeśli nie jest tablicą. Czy mógłbyś dokładniej? – Lukasz

Odpowiedz

9

Trzeba przekazać argument out:

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

OBS: Twój tablicy jest rzeczywiście 2- D tablica, dzięki czemu można użyć axis=0 do sumowania wzdłuż wierszy i axis=1, aby sumować wzdłuż kolumn.

+0

Czy to samo dla a = np.cumsum (a, axis = 1). Jak mogę potwierdzić, że 'a' jest oryginalnym – Samuel

+0

@Samuel [w dokumentacji, którą on podaje] (http://docs.scipy.org/doc/numpy/reference/generated/numpy.cumsum.html), że ta funkcja zwraca nową tablicę, ale nie wiem, jak sprawdzić, czy jest to ten sam obiekt, dla innych obiektów mogliśmy użyć 'hash()', ale np.ndarrays są unhashable ... –

+1

Może to zostać potwierdzone przez adres z 'a.data'. Potwierdziłem, że jest na miejscu na twojej drodze dzięki – Samuel

-4

Spróbuj tego za pomocą numpy bezpośrednio numpy.cumsum(a):

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

nie może działać na moim komputerze. moja wersja pytona to 2.6.6 – Samuel

+0

To jest złe, nie jest tutaj modyfikowane. –

Powiązane problemy