我使用了一个掩码来处理数组,现在我想强制“nan”获得一定的值(每个例子0个......)
使用中等数组的简单示例,我有:
[[[nan, nan], [nan, nan], [nan, nan], [nan, nan]], [[2, 0], [2, 2], [nan, nan], [nan, nan]], [[2, 2], [2, 0], [2, 1], [2, 2]]]
我想得到一个数组:
[[0, 0], [0, 0], [0, 0], [0, 0]], [[2, 0], [2, 2], [0, 0], [0, 0]], [[2, 2], [2, 0], [2, 1], [2, 2]]]
答案 0 :(得分:3)
>>> import numpy as np
>>> a = np.array([[np.nan, 0], [1, 2]])
>>> a
array([[ nan, 0.],
[ 1., 2.]])
>>> a = np.nan_to_num(a)
>>> a
array([[ 0., 0.],
[ 1., 2.]])
请注意,此会创建一个新数组,它不会原位更改原始数据。
答案 1 :(得分:1)
在作业的左侧使用带有numpy.isnan
的布尔索引。
>>> a
array([[[ nan, nan],
[ nan, nan]],
[[ 2., 0.],
[ nan, nan]],
[[ 2., 2.],
[ 2., 0.]]])
>>> a[np.isnan(a)] = 0
>>> a
array([[[ 0., 0.],
[ 0., 0.]],
[[ 2., 0.],
[ 0., 0.]],
[[ 2., 2.],
[ 2., 0.]]])
>>>