相关疑难解决方法(0)

找到列表中最常见的元素

查找Python列表中最常见元素的有效方法是什么?

我的列表项可能不具有哈希值,因此无法使用字典.同样在绘制的情况下,应返回具有最低索引的项目.例:

>>> most_common(['duck', 'duck', 'goose'])
'duck'
>>> most_common(['goose', 'duck', 'duck', 'goose'])
'goose'
Run Code Online (Sandbox Code Playgroud)

python list

158
推荐指数
9
解决办法
22万
查看次数

在numpy向量中找到最常见的数字

假设我在python中有以下列表:

a = [1,2,3,1,2,1,1,1,3,2,2,1]
Run Code Online (Sandbox Code Playgroud)

如何以整洁的方式找到此列表中最常见的号码?

python statistics numpy

103
推荐指数
6
解决办法
13万
查看次数

计算数组中的反转

我正在设计一个算法来执行以下操作:给定数组A[1... n],对于每个i < j,找到所有的反转对A[i] > A[j].我正在使用合并排序并将数组A复制到数组B,然后比较两个数组,但我很难看到如何使用它来查找反转次数.任何提示或帮助将不胜感激.

algorithm

101
推荐指数
10
解决办法
13万
查看次数

在numpy数组中查找模式的最有效方法

我有一个包含整数的2D数组(正数或负数).每行表示特定空间站点随时间的值,而每列表示给定时间内各种空间站点的值.

所以,如果数组如下:

1 3 4 2 2 7
5 2 2 1 4 1
3 3 2 2 1 1
Run Code Online (Sandbox Code Playgroud)

结果应该是

1 3 2 2 2 1
Run Code Online (Sandbox Code Playgroud)

请注意,当模式有多个值时,任何一个(随机选择)都可以设置为模式.

我可以一次迭代查找模式的列,但我希望numpy可能有一些内置函数来做到这一点.或者,如果有一个技巧可以有效地找到它而不循环.

python 2d numpy mode

61
推荐指数
6
解决办法
11万
查看次数

如何找到列表中最常见的元素?

鉴于以下列表

['Jellicle', 'Cats', 'are', 'black', 'and', 'white,', 'Jellicle', 'Cats', 
 'are', 'rather', 'small;', 'Jellicle', 'Cats', 'are', 'merry', 'and', 
 'bright,', 'And', 'pleasant', 'to', 'hear', 'when', 'they', 'caterwaul.', 
 'Jellicle', 'Cats', 'have', 'cheerful', 'faces,', 'Jellicle', 'Cats', 
 'have', 'bright', 'black', 'eyes;', 'They', 'like', 'to', 'practise', 
 'their', 'airs', 'and', 'graces', 'And', 'wait', 'for', 'the', 'Jellicle', 
 'Moon', 'to', 'rise.', '']
Run Code Online (Sandbox Code Playgroud)

我试图计算每个单词出现的次数并显示前3个.

但是我只想找到第一个字母大写的前三个,并忽略所有没有首字母大写的单词.

我相信有比这更好的方法,但我的想法是做以下事情:

  1. 将列表中的第一个单词放入另一个名为uniquewords的列表中
  2. 从原始列表中删除第一个单词及其复制的所有单词
  3. 将新的第一个单词添加到唯一的单词中
  4. 删除第一个单词及其原始列表中的所有单词.
  5. 等等...
  6. 直到原始列表为空....
  7. 计算唯一字中每个单词在原始列表中出现的次数
  8. 找到前三名并打印

python list frequency

32
推荐指数
7
解决办法
9万
查看次数

是否有更好的方法来查找列表中最常见的单词(仅限Python)

考虑到问题的一个简单实现,我正在寻找一种更快的方法来找到Python列表中最常见的单词.作为Python访谈的一部分,我收到的反馈是,这种实现效率很低,基本上都是失败的.后来,我尝试了很多我发现的算法,只有一些基于堆栈的解决方案速度稍微快一些,但不是绝大多数(当缩放到数千万个项目时,heapsearch的速度提高了大约30%;在千万倍的长度上,它几乎是相同;使用timeit).

def stupid(words):
    freqs = {}
    for w in words:
        freqs[w] = freqs.get(w, 0) + 1
    return max(freqs, key=freqs.get)
Run Code Online (Sandbox Code Playgroud)

由于这是一个简单的问题而且我有一些经验(虽然我无处算法大师或竞争编码器)我很惊讶.

当然,我想提高我的技能并学习解决问题的更好方法,所以你的意见将得到赞赏.

澄清重复状态:我的观点是找出实际上是否有更多(渐近)更好的解决方案,其他类似的问题已经选择了一个不太好的答案.如果这还不足以使问题变得独一无二,那么当然要关闭这个问题.

更新

谢谢大家的意见.关于访谈情况,我仍然认为手写搜索算法是预期的(可能更有效)和/或审阅者从另一种语言的角度评估代码,具有不同的常数因素.当然,每个人都可以拥有自己的标准.

对我来说重要的是验证我是否完全无能为力(我的印象是我不是)或者通常只写不是最好的代码.仍然有可能存在更好的算法,但如果它在这里为社区隐藏了几天,我就可以了.

我正在选择最受欢迎的答案 - 这样做似乎是公平的,尽管不止一个人提供有用的反馈意见.

次要更新

看起来使用defaultdict比使用'get'方法有明显的优势,即使它是静态别名的.

python algorithm

6
推荐指数
1
解决办法
520
查看次数

如何从python中的列表中获取最常见的元素

我有一个如此处所示的列表. a=[1936,2401,2916,4761,9216,9216,9604,9801] 我想获得更多重复的值.在这里它是'9216'我怎么能得到这个值?谢谢

python list python-3.x

2
推荐指数
1
解决办法
6587
查看次数

标签 统计

python ×6

list ×3

algorithm ×2

numpy ×2

2d ×1

frequency ×1

mode ×1

python-3.x ×1

statistics ×1