使numpy矩阵的特定元素为0

时间:2017-03-24 00:05:17

标签: python-3.x numpy

我使用以下方法获得了Numpy Matrix(M)的0个元素的索引:

index_array = numpy.argwhere(M == 0)

现在,我想在其他矩阵B中将这些索引元素(索引存在于index_array中)设置为0.是否有任何方法可以执行此操作?

例如:index_array contains

[[2 1]
[4 4]]

,因此将矩阵B中的(2,1)和(4,4)处的元素设为0。

1 个答案:

答案 0 :(得分:0)

你应该使用np.where返回一个row和col索引的元组,因此可以直接用作索引,而不是argwhere,只要索引不超出{ {1}},你可以这样做:

B

实施例

B[np.where(M == 0)] = 0

如果你想坚持M = np.array([[1,2],[3,0],[0,1]]) M #array([[1, 2], # [3, 0], # [0, 1]]) B = np.array([[1,2,3],[4,5,6],[7,8,9]]) B #array([[1, 2, 3], # [4, 5, 6], # [7, 8, 9]]) B[np.where(M == 0)] = 0 B #array([[1, 2, 3], # [4, 0, 6], # [0, 8, 9]]) ,你可以分别获得行索引和col索引,然后进行分配:

np.argwhere