Wert in Array ändern

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
mcatis
User
Beiträge: 20
Registriert: Donnerstag 29. August 2013, 01:11
Wohnort: Köln

Hallo,

habe ein 2D-Array, z.B:

Code: Alles auswählen

a = np.random.rand(5,10)
Ich will nun alle Werte mit 100 multiplizieren - aber nur wenn 2 Bedingungen erfüllt sind

1.) das jeweilige Element darf einen bestimmten Wert (value) nicht haben
2.) und der Index der 2. Ebene muss >5 sein

Ich habe schon mit allen möglichen Numpy-Funktionen rumgespielt (any, all, where, take, ...), aber alles nur Stückwerk bisher.
Einer meiner Ansätze:

Code: Alles auswählen

for i in range(0,len(a)):
    a[(a !=value) & (i > 5)] = ...
Geht aber alles nicht :(

Grüße
BlackJack

@mcatis: Die Bedingung mit dem Index würde ich erst einmal durch „slicen” erfüllen und dann den Rest auf dem resultierenden Array-Objekt durchführen. Also (ungetestet):

Code: Alles auswählen

b = a[:,6:]
b[b != value] *= 100
Nur falls das nicht klar sein sollte: `numpy` versucht in aller Regel Kopien von den zugrundeliegenden Arrays zu vermeiden und ein „slice” liefert soweit möglich nur einen „view” vom originalen Array. Die Manipulation von `b` wirkt sich also auf das Array aus was an `a` gebunden ist.
mcatis
User
Beiträge: 20
Registriert: Donnerstag 29. August 2013, 01:11
Wohnort: Köln

Lieben Dank für die fixe Antwort. Klappt!
Antworten