2016-04-04 16 views
-1

Zum Beispiel habe ich 300x600 numpy Array. Ich möchte Map's Lambda verwenden, um jeden Wert in diesem Array mit einigen if-Bedingungen zu modifizieren. (ZB wenn eine Zelle < 100 ist, dann wird es wurde 0, sonst nichts tun)Karte für jedes Element eines multidimensionalen Arrays verwenden?

Mit map und lambda stellt sich heraus, dass jede Variable in Lambda ist ein Array der Größe 600. Sie haben keine elegante Funktion, wo ich in der Lage bin durch alle Elemente eines Arrays beliebiger Größe zu iterieren und sie an Ort und Stelle zu modifizieren?

Antwort

2

Verwendung boolean indexing:

In [2]: arr = np.arange(25).reshape(5, 5) 

In [3]: arr 
Out[3]: 
array([[ 0, 1, 2, 3, 4], 
     [ 5, 6, 7, 8, 9], 
     [10, 11, 12, 13, 14], 
     [15, 16, 17, 18, 19], 
     [20, 21, 22, 23, 24]]) 

In [4]: arr[arr % 3 == 0] = 42 

In [5]: arr 
Out[5]: 
array([[42, 1, 2, 42, 4], 
     [ 5, 42, 7, 8, 42], 
     [10, 11, 42, 13, 14], 
     [42, 16, 17, 42, 19], 
     [20, 42, 22, 23, 42]]) 
0

können Sie verwenden

f=np.vectorize(<lambda>) 
f(a) 
Verwandte Themen