我有一个2D numpy数组,希望用1D数组中的相应值替换每行中的每个NaN
。例如,这个矩阵:
[[1. 2. NaN]
[4. 5. 6.]
[NaN NaN 9.]]
使用矢量[3. 7. 8.]
将被转换为:
[[1. 2. 8.]
[4. 5. 6.]
[3. 7. 9.]]
如何在不迭代索引的情况下做到这一点?
使用numpy.where
和广播:
>>> a = np.array([[1., 2., np.nan],
[4., 5., 6.],
[np.nan, np.nan, 9.]])
>>> v = np.array([3, 7, 8])
>>> np.where(np.isnan(a), v, a)
array([[ 1., 2., 8.],
[ 4., 5., 6.],
[ 3., 7., 9.]])
numpy.isnan()
为您提供了一个布尔值数组,NaN的值为True
,否则为False
。