如何在比较两个数组时用nan值填充数组



我有两个类似的numpy数组

import numpy as np
a=np.array([[ 3, nan,  4,  1,  4,  2,  2,  3],
[ 2, nan,  1,  3, nan,  4,  4,  3],
[ 3,  2, nan,  4, nan, nan,  3,  4],
[ 2,  2,  2, nan,  1,  1 ,nan,  2]])

b =np.array( [[ 2,  3,  2, 2,  3,  3,  3,  3],
[ 3,  3,  1,  4,  1,  4,  1, 7],
[ 4,  2, 5,  4,  4,  3, 10,  4],
[ 2,  4,  2,  1,  4,  1,  3, nan]])

要求:

其中元素值为数组中的nan,则将a分配给位于相同位置的数组b

预期输出:

[[2, nan, 2, 2, 3, 3, 3, 3],
[3, nan, 1, 4, nan, 4, 1, 7],
[4, 2, nan, 4, nan, nan, 10, 4],
[2, 4, 2, 1, nan, 1, nan, nan]]

这个怎么样:

b[np.isnan(a)] = float('nan')

如果您想要b的副本而不是就地更改,请使用以下方法:

c = np.where(np.isnan(a), a, b)
c = b.copy()
c[np.isnan(a)] = np.nan

最新更新