在numpy数组中快速就地替换某些值

时间:2011-11-03 11:29:48

标签: python performance numpy

必须有更快的方法来替换值,对吧?我有一个2D数组代表一个高程/水深测量网格。我想用NAN替换0以上的任何东西,这种方式非常慢:

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

这似乎是一个更好的方式!

2 个答案:

答案 0 :(得分:21)

以下将会这样做:

elevation[elevation > 0] = numpy.NAN

请参阅NumPy教程中的Indexing with Boolean Arrays

答案 1 :(得分:3)

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