2016-04-04 8 views
-1

たとえば、私は300x600 numpyの配列を持っています。マップのラムダを使用して、この配列内のすべての値のインプレースをいくつかのif条件で変更したいと考えています。あなたは、私ができる午前任意のエレガントな機能を持っています(セルが< 100で例えばあれば、それはそれ以外の場合は何もしない、0になっただろう)多次元配列の各要素にマップを使用しますか?

maplambdaを使用するには、ラムダの各変数は、サイズ600の配列であることが判明します任意のサイズの配列のすべての要素を反復処理し、それらを所定の場所に変更しますか?

答えて

2

使用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

を使用でき

f=np.vectorize(<lambda>) 
f(a) 
関連する問題