Bru*_*uce 214 python counter frequency counting
我需要在列表中找到元素的频率
a = [1,1,1,1,2,2,2,2,3,3,4,5,5]
Run Code Online (Sandbox Code Playgroud)
输出 - >
b = [4,4,2,1,2]
Run Code Online (Sandbox Code Playgroud)
另外我想从a中删除重复项
a = [1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)
unu*_*tbu 490
在Python 2.7(或更新版本)中,您可以使用collections.Counter
:
import collections
a = [1,1,1,1,2,2,2,2,3,3,4,5,5]
counter=collections.Counter(a)
print(counter)
# Counter({1: 4, 2: 4, 3: 2, 5: 2, 4: 1})
print(counter.values())
# [4, 4, 2, 1, 2]
print(counter.keys())
# [1, 2, 3, 4, 5]
print(counter.most_common(3))
# [(1, 4), (2, 4), (3, 2)]
Run Code Online (Sandbox Code Playgroud)
如果您使用的是Python 2.6或更早版本,可以在此处下载.
Nad*_*mli 130
由于列表是订购的,您可以这样做:
a = [1,1,1,1,2,2,2,2,3,3,4,5,5]
from itertools import groupby
[len(list(group)) for key, group in groupby(a)]
Run Code Online (Sandbox Code Playgroud)
输出:
[4, 4, 2, 1, 2]
Run Code Online (Sandbox Code Playgroud)
Amj*_*ith 102
Python 2.7+引入了词典理解.从列表中构建字典将获得计数以及删除重复项.
>>> a = [1,1,1,1,2,2,2,2,3,3,4,5,5]
>>> d = {x:a.count(x) for x in a}
>>> d
{1: 4, 2: 4, 3: 2, 4: 1, 5: 2}
>>> a, b = d.keys(), d.values()
>>> a
[1, 2, 3, 4, 5]
>>> b
[4, 4, 2, 1, 2]
Run Code Online (Sandbox Code Playgroud)
Ida*_*n K 47
要计算出现次数:
from collections import defaultdict
appearances = defaultdict(int)
for curr in a:
appearances[curr] += 1
Run Code Online (Sandbox Code Playgroud)
要删除重复项:
a = set(a)
Run Code Online (Sandbox Code Playgroud)
lin*_*lof 24
计算元素的频率可能最好用字典来完成:
b = {}
for item in a:
b[item] = b.get(item, 0) + 1
Run Code Online (Sandbox Code Playgroud)
要删除重复项,请使用以下集:
a = list(set(a))
Run Code Online (Sandbox Code Playgroud)
YOU*_*YOU 23
在Python 2.7+中,您可以使用collections.Counter来计算项目
>>> a = [1,1,1,1,2,2,2,2,3,3,4,5,5]
>>>
>>> from collections import Counter
>>> c=Counter(a)
>>>
>>> c.values()
[4, 4, 2, 1, 2]
>>>
>>> c.keys()
[1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)
rbe*_*nto 14
这是另一个简洁的替代方法itertools.groupby
,它也适用于无序输入:
from itertools import groupby
items = [5, 1, 1, 2, 2, 1, 1, 2, 2, 3, 4, 3, 5]
results = {value: len(list(freq)) for value, freq in groupby(sorted(items))}
Run Code Online (Sandbox Code Playgroud)
结果
{1: 4, 2: 4, 3: 2, 4: 1, 5: 2}
Run Code Online (Sandbox Code Playgroud)
Evg*_*lov 11
你可以这样做:
import numpy as np
a = [1,1,1,1,2,2,2,2,3,3,4,5,5]
np.unique(a, return_counts=True)
Run Code Online (Sandbox Code Playgroud)
输出:
(array([1, 2, 3, 4, 5]), array([4, 4, 2, 1, 2], dtype=int64))
Run Code Online (Sandbox Code Playgroud)
第一个数组是值,第二个数组是具有这些值的元素数.
所以如果你想得到数字的数组,你应该使用这个:
np.unique(a, return_counts=True)[1]
Run Code Online (Sandbox Code Playgroud)
seta = set(a)
b = [a.count(el) for el in seta]
a = list(seta) #Only if you really want it.
Run Code Online (Sandbox Code Playgroud)
小智 7
from collections import Counter
a=["E","D","C","G","B","A","B","F","D","D","C","A","G","A","C","B","F","C","B"]
counter=Counter(a)
kk=[list(counter.keys()),list(counter.values())]
pd.DataFrame(np.array(kk).T, columns=['Letter','Count'])
Run Code Online (Sandbox Code Playgroud)
小智 6
我将以以下方式简单地使用scipy.stats.itemfreq:
from scipy.stats import itemfreq
a = [1,1,1,1,2,2,2,2,3,3,4,5,5]
freq = itemfreq(a)
a = freq[:,0]
b = freq[:,1]
Run Code Online (Sandbox Code Playgroud)
您可以在此处查看文档:http : //docs.scipy.org/doc/scipy-0.16.0/reference/generation/scipy.stats.itemfreq.html
数据。假设我们有一个列表:
fruits = ['banana', 'banana', 'apple', 'banana']
Run Code Online (Sandbox Code Playgroud)
解决方案。然后我们可以通过执行以下操作找出列表中每种水果的数量:
import numpy as np
(unique, counts) = np.unique(fruits, return_counts=True)
{x:y for x,y in zip(unique, counts)}
Run Code Online (Sandbox Code Playgroud)
输出:
{'banana': 3, 'apple': 1}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
419673 次 |
最近记录: |