是否有numpy.where()等效于行方式操作?

时间:2014-08-10 11:15:06

标签: python numpy scipy

我想找到某个条件的第一次出现的索引,这样它就会返回一个向量。我需要在axis=0np.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或任何其他功能。

1 个答案:

答案 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])
相关问题