慕桂英3389331
输入:In [77]: X Out[77]: array([[inf, 1., inf], [inf, 2., 4.], [ 3., 4., 5.]])In [78]: M Out[78]: array([[1, 0, 0], [0, 1, 0], [0, 1, 0]])方法首先,我们需要反转掩码M,然后使用numpy.where; 有了这些索引,我们就可以将原始数组中的元素设置为零,方法如下:# inverting the maskIn [59]: M_not = np.logical_not(M)In [80]: M_notOut[80]: array([[False, True, True], [ True, False, True], [ True, False, True]])# get the indices where `True` exists in array `M_not`In [81]: indices = np.where(M_not) In [82]: indices Out[82]: (array([0, 0, 1, 1, 2, 2]), array([1, 2, 0, 2, 0, 2]))# zero out the elementsIn [84]: X[indices] = 0In [61]: X Out[61]: array([[inf, 0., 0.], [0., 2., 0.], [0., 4., 0.]])PS反转掩码不应理解为矩阵反转。应该理解为翻转布尔值(True--> False; False--> True)