我有一个n * x numpy矩阵,看起来像这样:
a = np.array([[1, 0], [0, 1]])
还有另一个n * n numpy矩阵,看起来像这样:
b = np.array([[2, 2], [2, 2]])
我想用a
的相应元素替换b
的零个元素,这样我会得到:
[[1, 2],
[2, 1]]
我该怎么做?
答案 0 :(得分:4)
您可以只使用布尔掩码:
mask = (a == 0)
a[mask] = b[mask]
如果要更新原始数组a
,这将非常有效,因为它仅分配给零个元素,而不是整个数组。
答案 1 :(得分:4)
您可以使用np.where
:
np.where(a!=0, a, b)
array([[1, 2],
[2, 1]])