我想找到某个条件的第一次出现的索引,这样它就会返回一个向量。我需要在axis=0
或np.where
pylab
函数中使用find
条件,但这不会实现。
为了澄清,想象一下我有以下矩阵:
d=np.array([[0, 1, 0, 1], [0, 1, 1, 1], [1, 0, 0, 0], [0,0,0,1]])
我希望第一次出现d==1
行。
结果应为[1, 1, 0, 3]
,但我不知道如何有效地使用np.where
或任何其他功能。
答案 0 :(得分:6)
我认为你在这里寻找的不是where
,它将根据条件从两个不同数组中的一个返回一个元素数组,但argmax
会返回给你最大值的索引 - 或者,对于2D数组,每个行或列的最大值的索引。
但是你不想要最大值,你想要1
的值,对吧?好吧,d==1
是一组布尔值,True
大于False
,所以:
In [43]: np.argmax(d==1, axis=1)
Out[43]: array([1, 1, 0, 3])