我有两个类似的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