我知道如何从 numpy 数组中找到重复项的数量。 但是,我需要仅在 numpy 数组的末尾查找重复项的数量。 请参阅下面我的示例:
输入示例如下:
1995
1996
1996
1997
1998
1999
1999
1999
期望的输出:
3
提前致谢!
最佳答案
这是 np.minimum.accumulate
的一种方法-
np.minimum.accumulate(a[::-1]==a[-1]).sum()
示例运行 -
In [64]: a
Out[64]: array([2, 1, 9, 0, 0, 0, 2, 1, 0, 0, 0, 0, 2, 1, 0, 9, 9, 9, 9, 9])
In [73]: np.minimum.accumulate(a[::-1]==a[-1]).sum()
Out[73]: 5
另一个带有 argmin
-
In [88]: (a[::-1]==a[-1]).argmin()
Out[88]: 5
对于极端情况,如果所有元素都相同,我们可能需要一个额外的步骤来检查 a[::-1]==a[-1] 上的
并在这种情况下返回所有
匹配项len(a)
。或者,如果计数为 0
,这不能作为输出,我们将输出 len(a)
。
关于python - 仅查找 numpy 数组末尾的重复项数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62312111/