numpy用另一个矩阵逐元素替换矩阵

时间:2020-03-17 10:57:40

标签: python numpy

我有一个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]]

我该怎么做?

2 个答案:

答案 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]])
​