每行最后一次出现 True 的索引

use*_*807 5 python boolean numpy argmax

我有一个二维数组:

a = ([[False False False False False  True  True  True  True  True  True  True
   True  True  True  True  True  True  True  True  True  True  True  True
   True False False False]
 [False False False False  True  True  True  True  True  True  True  True
   True  True  True  True  True  True  True  True  True  True  True  True
  False False False False]])
Run Code Online (Sandbox Code Playgroud)

我试图获取每行中最后一次出现“True”的索引。所以结果数组应该是

b = ([24, 23])
Run Code Online (Sandbox Code Playgroud)

为了找到第一个 True 的出现,我知道我可以使用 np.argmax()。

b = np.argmax(a==True,axis=1)
Run Code Online (Sandbox Code Playgroud)

有没有从最后查找的函数?我尝试反转数组的值,然后使用 np.argmax(),但它会给出反转数组的索引。

Val*_*_Bo 2

向后处理每一行,并将结果从行长度 - 1 中减去:

result = a.shape[1] - np.argmax(a[:, ::-1], axis=1) - 1
Run Code Online (Sandbox Code Playgroud)

甚至== True不需要。

结果是:

array([24, 23], dtype=int64)
Run Code Online (Sandbox Code Playgroud)