2013-08-28 3 views
8

Ich möchte das Integralbild berechnen. BeispielWie bekomme ich die kumulative Summe von numpy Array in-Place

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

dies ein weiteres Array erzeugt b.Can auszuführen I die cumsum in-place. Wenn nicht . Gibt es noch andere Methoden zu tun, dass

+0

Ich bin nicht sicher, welchen Ausgabewert Sie erwarten, wenn nicht ein Array. Könnten Sie bitte genau? – Lukasz

Antwort

9

Sie haben das Argument out weitergeben müssen:

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

OBS: Ihr Array ist eigentlich ein 2- D-Array, so können Sie axis=0 Summe entlang der Zeilen und axis=1 Summe entlang der Spalten verwenden.

+0

Ist das gleich a = np.cumsum (a, axis = 1). Wie kann ich bestätigen, dass das "a" das Original – Samuel

+0

@Samuel ist (in der Dokumentation steht) (http://docs.scipy.org/doc/numpy/reference/generated/numpy.cumsum.html), dass diese Funktion gibt ein neues Array zurück, aber ich weiß nicht, wie man überprüft, ob es das gleiche Objekt ist, für andere Objekte könnten wir 'hash()' verwenden, aber np.narrays sind nicht hashbar ... –

+1

Es kann durch die Adresse bestätigt werden von 'a.data'. Ich habe bestätigt, dass es in Ihrem Weg ist Dank – Samuel

-4

Versuchen Sie dies mit numpy direkt numpy.cumsum(a):

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

kann nicht auf meinem Computer arbeiten. Meine PYton-Version ist 2.6.6 – Samuel

+0

Das ist falsch, a wird hier nicht geändert. –