Angenommen, Sie ein Array haben:Numpy Array Bedingte Operationsmaske?
a = [ 0,1,0] [-1,2,1] [3,-4,2]
Und können Sie sagen 20 bis alles
b = [ 20, 21, 20] [ 19, 22, 21] [ 23, 16, 22]
Nun fügen Sie können sagen, dass ich die resultierende b
zum ursprünglichen Array hinzufügen möchten a
aber nur in Fällen, in denen a < 0
dh bei der Index [0,1]
und [1,2]
wo a = -1, -4
bzw. bekommen die Wert 0 sonst. Letztlich solche, die zu einer Matrix als:
c = [ 0, 0, 0] [ 18, 0, 0] [ 0, 12, 0]
18 = 19 (from b) + -1 (from a) 12 = 16 (from b) + -4 (from a)
und gehen davon aus, dass ich das in der Lage sein wollen jeden Betrieb zu erweitern (nicht nur 20 hinzufügen), so dass Sie nicht nur alle Werte filtern < 20 von Matrix c
. Daher möchte ich die Matrix a
als Maske für die Matrix c verwenden und die i, j
a[i,j] < 0
auf Null setzen.
Ich habe eine harte Zeit, ein kurzes Beispiel dafür zu finden, wie man das mit Python macht. Ich habe gehofft, dass Sie mich vielleicht zur richtigen Implementierung einer solchen Methode leiten können.
Was ich kämpfen muss, ist dies in eine Maske und führt nur Operationen auf die beibehaltenen Werte, schließlich in c
.
Vielen Dank für die Hilfe im Voraus.
sehr elegante Lösung! – MaxU
Dies ist die eleganteste Lösung. Ich kann mir nicht vorstellen, dass jemand eine sauberere Methode hat. Sehr sauber ausgeführt. Vielen Dank. – and0rsk