以 10 为底的 int() 的无效文字:'nan' 尝试替换 NaN 中的 0 时

invalid literal for int() with base 10: 'nan' when trying to replace 0 in NaN

我有 7 个维度的 nd 数组。我想在每个波段中将 0 值更改为 None 值 (nan)。

我试过这样:

band[band == 0] = "nan"

但后来我收到错误信息:

ValueError: invalid literal for int() with base 10: 'nan'

我尝试将 nan 更改为 None 和 np.nan 但是对于 none 我有以下错误:

TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'

和 np.nan:

ValueError: cannot convert float NaN to integer

数组值类型为 numpy.int64 。

我的最终目标是能够将 0 值更改为数组的 nan 值。

您必须将数组数据类型更改为 float。这是一个例子:

import numpy as np
a = np.array([0,1,2,3],dtype=float)
a[a==0] = np.nan