f.a*_*uri 4 python arrays numpy nan
我有一个阵列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
Run Code Online (Sandbox Code Playgroud)
但我得到了这个错误:data_a[i,j] = numpy.nan
ValueError: cannot convert float NaN to integer
我不明白错误.任何替代或解决方案?
该错误消息是因为您的数组用于存储整数:
>>> 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
Run Code Online (Sandbox Code Playgroud)
但是,如果您的数组是用于浮点数,那么它将起作用.你也可以不用循环来做到这一点:
>>> 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.])
Run Code Online (Sandbox Code Playgroud)
如果要将数组转换为float数组,可以使用astype:
>>> a = a.astype(float)
>>> a
array([ 0., 1., 2.])
>>> a.dtype
dtype('float64')
Run Code Online (Sandbox Code Playgroud)