Wie kann jedes Element eines numpligen Arrays entsprechend seinem relativen Wert bearbeitet werden?

8

Nehmen wir an, wir haben ein Array

%Vor%

Der Pseudocode für was ich will -

%Vor%

Was ist der sauberste Weg, um dies mit numpigen Funktionen durchzuführen?

    
tnt 09.12.2010, 17:14
quelle

4 Antworten

14

Normalerweise versucht man, Python-Schleifen über NumPy-Arrays zu vermeiden - deshalb verwenden Sie NumPy an erster Stelle. Ich nehme zum Beispiel an, dass funcA() allen Elementen 1 hinzufügt, funcB() addiert 2 und funcC() addiert 3 (bitte erläutern Sie, was sie wirklich für ein maßgeschneiderteres Beispiel tun). Um zu erreichen, was Sie wollen, können Sie dies tun:

%Vor%

Dies verwendet die fortgeschrittene NumPy-Indizierung . Zum Beispiel wird a > 80 zu einem Array von booleschen Werten ausgewertet, mit denen die Einträge im Array ausgewählt werden können, die die Bedingung erfüllen.

    
Sven Marnach 09.12.2010, 17:20
quelle
8

Schauen Sie sich numpy.piecewise an. Ich denke du willst:

%Vor%     
Russell Borogove 09.12.2010 19:49
quelle
3

Ich mag das:

%Vor%

Dies vermeidet seltsames Verhalten, wenn funcA ein Element von a setzt, das zum Beispiel 39 zu 41 war, und es in den Bereich für funcB gebracht hat.

    
mtrw 09.12.2010 17:46
quelle
0

Wenn Sie komplexere Funktionen benötigen, können Sie

verwenden %Vor%

wo func (x) deine Funktion ist.

    
user2459109 06.08.2013 14:53
quelle

Tags und Links