我有一个包含值和NaN的float64 numpy数组:
[[ 5. nan nan nan nan nan nan nan nan nan nan nan nan]
[nan 6. nan nan nan nan nan nan nan nan nan nan nan]
[nan 7. 5. nan nan nan nan nan nan nan nan nan nan]
[nan nan nan 7. nan nan nan nan nan nan nan nan nan]
[nan nan nan nan 4. nan nan nan nan nan nan nan nan]
[nan nan nan nan 5. 3. nan nan nan nan nan nan nan]
[nan nan nan nan nan nan nan nan nan nan nan nan nan]
[ 1. nan nan nan nan nan nan 4. nan nan nan nan nan]
[nan nan nan nan nan nan 7. nan nan nan nan nan nan]
[nan nan nan nan nan nan nan nan nan 7. nan nan nan]
[nan nan nan nan nan nan 7. nan 7. nan 6. nan nan]
[nan nan nan nan nan nan nan nan nan nan nan 7. nan]
[nan nan nan nan nan nan nan 6. nan nan nan nan 5.]]
我想将所有数字转换为整数但 np.round
或 np.around
并不安静似乎可以完成这项工作 . 此外,我无法更改数组的类型,因为整数类型数组不支持"nan's" . 我该怎么做呢?
3 回答
使用inf . 像-99999或99999或任何你想要的inf .
To convert NaN to zero: numpy.nan_to_num(arr),直接作用于数组,以及单个值 . (使用
..., copy=False
arg以避免浪费内存,即就地操作 . )所以要做NaN替换然后进行类型转换:
numpy.nan_to_num(arr).astype(np.int)
To convert NaN to any other specific value: 你没有't say what value you want to replace NaN with. If you want a different replacement value than zero, you'需要使用逻辑索引来做到这一点:
arr[np.isnan(arr)] = -99
然后.astype(np.int)
.问题是,这些转换成什么 Value ?
假设这个数组是名称
x
,然后:现在,您可以按照自己的方式将数据转换为整数 .