小编典典

用nan替换NumPy整数数组中的零

python

我在下面写了一个python脚本:

import numpy as np

arr = np.arange(6).reshape(2, 3)
arr[arr==0]=['nan']
print arr

但是我得到了这个错误:

Traceback (most recent call last):
  File "C:\Users\Desktop\test.py", line 4, in <module>
    arr[arr==0]=['nan']
ValueError: invalid literal for long() with base 10: 'nan'
[Finished in 0.2s with exit code 1]

如何用nan替换NumPy数组中的零?


阅读 214

收藏
2021-01-20

共1个答案

小编典典

np.nan具有type
float:包含它的数组也必须具有此数据类型(或complexorobject数据类型),因此arr在尝试分配此值之前,可能需要强制转换。

出现错误是因为'nan'无法将字符串值转换为与类型匹配的整数arr类型。

>>> arr = arr.astype('float')
>>> arr[arr == 0] = 'nan' # or use np.nan
>>> arr
array([[ nan,   1.,   2.],
       [  3.,   4.,   5.]])
2021-01-20