2011-11-03 2 views
14

値の置き換えをより速く行う方法が必要でしょうか?私は高さ/地形のグリッドを表す2D配列を持っています。 0以上のものをNANに置き換えたいのですが、この方法は非常に遅いです。numpyの配列でいくつかの値を高速に置き換えます

for x in range(elevation.shape[0]): 
    for y in range(elevation.shape[1]): 
     if elevation[x,y] > 0: 
      elevation[x,y] = numpy.NAN 

これはもっと良い方法ですよね?

答えて

20

以下はそれを行います。

elevation[elevation > 0] = numpy.NAN 

はnumpyのチュートリアルでIndexing with Boolean Arraysを参照してください。

3
np.putmask(elevation, elevation > 0, np.nan)