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

16

肯定有更快的方法来进行值的原地替换,对吧?我有一个二维数组,代表高程/水深的网格。我想用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个回答

21
以下代码可以实现此功能:
elevation[elevation > 0] = numpy.NAN

请查看NumPy教程中的布尔数组索引部分。


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接