我在下面写了一个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数组中的零?
np.nan具有type float:包含它的数组也必须具有此数据类型(或complexorobject数据类型),因此arr在尝试分配此值之前,可能需要强制转换。
np.nan
float
complex
object
arr
出现错误是因为'nan'无法将字符串值转换为与类型匹配的整数arr类型。
'nan'
>>> arr = arr.astype('float') >>> arr[arr == 0] = 'nan' # or use np.nan >>> arr array([[ nan, 1., 2.], [ 3., 4., 5.]])