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

标签 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

但是我得到了这个错误: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/

相关文章:

python - 如何删除数据框中的重复值并计算耗时?

C# 在代码中从复制的 SQL 值创建字节数组?

python - 当 numpy int32 数组转换为 float32 时,值会发生变化

python - 神经网络中的nb_epoch代表什么?

python - 基于 __hash__ 设置更改隐式顺序?

python - Tkinter:root.after(), root.after_cancel()

javascript - 检查项目是否存在于数组 React 中

javascript - 如何在javascript中将表单转换为Json数组

python - reshape 矩阵

python - 与空 numpy 数组连接