要转换为 nan 值的数组的零值

2024-02-17

我有一个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: 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

不过,如果您的数组用于浮点数,那么它就可以工作。你也可以不使用循环来做到这一点:

>>> 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.])

如果你想将数组转换为浮点数组,你可以使用astype:

>>> a = a.astype(float)
>>> a
array([ 0.,  1.,  2.])
>>> a.dtype
dtype('float64')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

要转换为 nan 值的数组的零值 的相关文章

随机推荐