如何创建满足特定条件的行索引的Numpy矩阵?

时间:2019-07-06 15:00:23

标签: numpy matrix where-clause

如何将满足条件的行数值矩阵转换为行索引的行矩阵?

A = array([[ 0.,  5.,  0.],[ 0.,  0.,  3.],[ 0.,  0.,  0.]])

如果在这里我想使用一个条件-如果一个元素大于0,然后用行索引+1替换它,我该怎么做? 所以输出应该是

B = array([[0., 1., 0.],[0., 0., 2.],[0., 0., 0.]])

不确定我是否正确使用了np.where。谢谢。

1 个答案:

答案 0 :(得分:0)

使用numpy.where

np.where(A>0, np.arange(1, A.shape[0]+1)[:, None], A)

array([[0., 1., 0.],
       [0., 0., 2.],
       [0., 0., 0.]])

或者您可以使用算术(如果您的值小于0小于,则不起作用):

(A > 0) * np.arange(1, A.shape[0]+1)[:, None]