我使用以下方法获得了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。
答案 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