我有一个带有数字的numpy数组,我想计算从最后一个元素开始有多少元素相等。
A = [1, 3, 2, 2, 0, 3, 2, 2, 2, 2]
那么我希望返回值为 4(最后四个元素相等(
print(np.argmax(A[::-1] != A[-1]))
我不确定当 A 超大时它的表现如何。在这种情况下,简单的 for 循环会更好。
注意:为什么这可以通过文档中的以下行来理解:
如果多次出现最大值,则返回与第一次出现对应的索引。
感谢 YSelf 的指正。
对于您希望只有几个项目相同的大型数组,具有next
的生成器表达式可能很有效:
A = np.array([1, 3, 2, 2, 0, 3, 2, 2, 2, 2])
last = A[-1]
res = next(i for i, j in enumerate(A[::-1]) if j != last)
# 4