如何将满足条件的行数值矩阵转换为行索引的行矩阵?
说
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。谢谢。
答案 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]