我正在用numpy替换NaN中的一个数字,并且正在寻找像numpy.nan_to_num这样的函数,除了相反。Numpy - 用NaN替换一个数字
当处理不同的数组时,数字可能会发生变化,因为每个数组都可以唯一地定义NoDataValue。我看到有人在使用字典,但是阵列很大,并且都有正面和负面的花车。我怀疑尝试将所有这些加载到任何东西来创建密钥是没有效率的。
我尝试使用以下和numpy要求我使用任何()或所有()。我意识到我需要迭代元素明智,但希望内置函数可以实现这一点。
def replaceNoData(scanBlock, NDV):
for n, i in enumerate(array):
if i == NDV:
scanBlock[n] = numpy.nan
NDV是GDAL的无数据值,数组是一个numpy数组。
是一个蒙面阵列的方式可能吗?
索引,我不知道我知道什么是错的,你提供的解决方案布尔矩阵。它不能正常工作吗? –
@Chris Gregg这个解决方案需要一些缩进,不需要返回数组(因为它是就地的),应该避免使用'array'作为变量来避免与np.array混淆,但最重要的是,将会非常糟糕与典型的numpy索引和广播相比较慢。 – Paul
@Paul我的关注是速度,非常感谢下面的答案。我使用变量只是为了使代码更清晰,我也会避免使用数组。 – Jzl5325