In meinem Code versuche ich irgendwann, einen Wert eines maskierten Arrays zu ändern, doch Python scheint dies zu ignorieren. Ich denke, dass dies mit der Art und Weise zu tun hat, wie Speicher in Arrays gespeichert wird, als ob ich eine Kopie des Wertes modifizieren würde und nicht den Wert selbst, aber ich bin nicht gut genug darin, um eine Ahnung zu haben, wie man es löst es. HierWie kann ich den Wert eines maskierten Arrays in numpy ändern?
ist eine vereinfachte Version von dem, was ich versuche zu tun:
x = np.zeros((2,5)) # create 2D array of zeroes
x[0][1:3] = 5 # replace some values along 1st dimension with 5
mask = (x[0] > 0) # create a mask to only deal with the non negative values
x[0][mask][1] = 10 # change one of the values that is non negative
print x[0][mask][1] # value isn't changed in the original array
der Ausgang dieser ist:
5.0
wenn es sein sollte 10.
Jede Hilfe würde sehr geschätzt werden, im Idealfall muss dies skalierbar sein (was bedeutet, dass ich nicht unbedingt die Form von x kenne, oder wo die Werte nicht negativ sind oder welche ich modifizieren muss).
Ich arbeite mit numpy 1.11.0, auf Python 2.7.12 auf Ubuntu 16.04.2
Dank!
Wo möglich mit einem Satz von Indexierungsklammern, nicht mehrere, z. 'x [0, 1: 3]'; 'x [0, Maske]'. Beachten Sie jedoch, dass die Indexierung mit einer booleschen Maske eine Kopie erzeugt. – hpaulj