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

jac*_*cob 2 python numpy scipy

我想找到一些条件的第一次出现的索引,这样它就会返回一个向量.我需要像axis=0条件np.wherepylab find函数一样的东西,但是没有实现.

为了澄清,想象一下我有以下矩阵:

d=np.array([[0,  1, 0, 1], [0, 1, 1, 1], [1, 0, 0, 0], [0,0,0,1]])
Run Code Online (Sandbox Code Playgroud)

我想要第一次出现d==1行.

结果应该是[1, 1, 0, 3],但我没有看到如何np.where有效地使用或任何其他功能.

aba*_*ert 7

我认为你在这里寻找的不是where,它将根据条件从两个不同数组中的一个返回一个元素数组,但是argmax,它返回最大值的索引 - 或者,对于2D数组,每行或每列的最大值的索引.

但是你不想要最大值,你想要的值1,对吗?嗯,d==1是一个布尔数组,并且True大于False,所以:

In [43]: np.argmax(d==1, axis=1)
Out[43]: array([1, 1, 0, 3])
Run Code Online (Sandbox Code Playgroud)