我有一个 1200*1200 的数组。它的一些值是零。我想将零值转换为 numpy.nan 值。这是我的解决方案:
import numpy
for i in range(1200):
for j in range(1200):
if data_a[i, j] == 0:
data_a[i, j] = numpy.nan
但是我得到了这个错误:data_a[i,j] = numpy.nan
ValueError:无法将 float NaN 转换为整数
我不明白这个错误。任何替代方案或解决方案?
最佳答案
该错误消息是因为您的数组用于存储整数:
>>> import numpy as np
>>> a = np.arange(3)
>>> a
array([0, 1, 2])
>>> a.dtype
dtype('int32')
>>> a[0] = np.nan
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: cannot convert float NaN to integer
不过,如果您的数组用于 float ,它就可以工作。您也可以不使用循环来完成:
>>> a = np.arange(3.0)
>>> a
array([ 0., 1., 2.])
>>> a[a==0]
array([ 0.])
>>> a[a==0] = np.nan
>>> a
array([ nan, 1., 2.])
如果您想将数组转换为 float 组,可以使用astype
:
>>> a = a.astype(float)
>>> a
array([ 0., 1., 2.])
>>> a.dtype
dtype('float64')
关于python - 要转换为 nan 值的数组的零值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13300773/