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(),但它会给出反转数组的索引。
向后处理每一行,并将结果从行长度 - 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)