Seite 1 von 1

Wert in Array ändern

Verfasst: Freitag 30. August 2013, 11:59
von mcatis
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

Re: Wert in Array ändern

Verfasst: Freitag 30. August 2013, 12:10
von 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.

Re: Wert in Array ändern

Verfasst: Freitag 30. August 2013, 12:26
von mcatis
Lieben Dank für die fixe Antwort. Klappt!