阵列的零值转换为楠值 [英] zero values of an array to be converted to nan values
问题描述
我有一个数组1200 * 1200。它的一些值为零。欲零值转换为numpy.nan值。这是我的解决方案:
I have an array 1200*1200. Some of its values are zero. I want to convert the zero values to numpy.nan values. This is my solution:
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错误:不能转换浮动NaN的成整数
我不明白的错误。任何替代方案或解决方案?
But I got this error: data_a[i,j] = numpy.nan
ValueError: cannot convert float NaN to integer
I don't understand the error. Any alternatives or solutions?
推荐答案
这是错误消息,是因为你的阵列是用于存储整数:
That error message is because your array is for storing integers:
>>> 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
如果你的阵列是花车,虽然,它会工作。你可以这样做没有循环,也:
If your array is for floats, though, it'll work. You can do it without loops, too:
>>> 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
:
If you want to convert your array to a float array, you could use astype
:
>>> a = a.astype(float)
>>> a
array([ 0., 1., 2.])
>>> a.dtype
dtype('float64')
这篇关于阵列的零值转换为楠值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!