我知道如何从一个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
对于角的情况,如果所有的元素都是一样的,我们可能需要额外的一步来检查是否有 all
匹配 a[::-1]==a[-1]
并返回 len(a)
在这种情况下。或者如果计数是 0
,这不能成为输出,我们将输出 len(a)
而不是。
mylist = [1995,
1996,
1996,
1997,
1998,
1999,
1999,
1999]
s = 0
x = mylist[-1]
for i in mylist:
if i == x: s+= 1
print(s)
我的解决方法如下,不过,我相信一行人一定会有更优雅的解决方法!
def get_numlastdups(my_nparray):
numlastdups=0
for i in range(2,len(my_nparray)):
if my_nparray[-1]==my_nparray[-i]: numlastdups+=1
else: break
return numlastdups