只在一个numpy数组的末尾查找重复的数量。

问题描述 投票:0回答:1

我知道如何从一个numpy数组中找到重复的数量,但我需要找到重复的数量。最后才numpy数组.请看我下面的例子。

输入示例如下:

1995
1996
1996
1997
1998
1999
1999
1999

希望的输出。

3

先谢谢你!

python numpy
1个回答
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) 而不是。


0
投票
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)

0
投票

我的解决方法如下,不过,我相信一行人一定会有更优雅的解决方法!

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
© www.soinside.com 2019 - 2024. All rights reserved.