Numpy - 用NaN替换数字

Jzl*_*325 31 python arrays numpy nan gdal

我想在numpy中用NaN替换一个数字,我正在寻找像numpy.nan_to_num这样的函数,反之亦然.

处理不同的数组时,该数字可能会发生变化,因为每个数组都可以唯一定义NoDataValue.我看到人们使用字典,但阵列很大,充满了正面和负面的浮动.我怀疑尝试将所有这些加载到任何东西来创建密钥是没有效率的.

我尝试使用以下和numpy要求我使用any()或all().我意识到我需要迭代元素,但希望内置函数可以实现这一点.

def replaceNoData(scanBlock, NDV):
    for n, i in enumerate(array):
        if i == NDV:
            scanBlock[n] = numpy.nan
Run Code Online (Sandbox Code Playgroud)

NDV是GDAL没有数据值,数组是一个numpy数组.

是一个掩盖阵列的方式可能去?

Pau*_*aul 47

A[A==NDV]=numpy.nan
Run Code Online (Sandbox Code Playgroud)

A == NDV将产生一个布尔数组,可用作A的索引

  • 它是正在使用的数据类型的有效范围之外的特殊位序列.它用于表示缺失数据或未产生有效值的数学错误的结果.希望这会有所帮助:https://en.wikipedia.org/wiki/NaN (3认同)
  • 请注意,“A.min()”和“A.max()”不是检查其是否有效的好方法,因为它们都会返回“nan”...如果您希望获得最小值/最大值,请使用“np.nanmin” (A)` 和 `np.nanmax(A)`。 (3认同)