这是一种方法np.minimum.accumulate https://numpy.org/doc/stable/reference/generated/numpy.ufunc.accumulate.html -
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
对于极端情况,如果所有元素都相同,我们可能需要一个额外的步骤来检查all
匹配于a[::-1]==a[-1]
并返回len(a)
在这种情况下。或者如果计数是0
,这不能作为输出,我们将输出len(a)
反而。