Python 如何统计由列表组成的数据集的元素
有一个数据集示例Python 如何统计由列表组成的数据集的元素,python,list,count,Python,List,Count,有一个数据集示例A=[[1,3,5],[2,3,5]] 我想知道使用计数器函数的每个元素1,2,3,5的频率 我想得到计数器('3':2,'5':2,'1':1,'2':2)的结果。使用计数器试试这个: from collections import Counter A = [[1,3,5],[2,3,5]] result = Counter([i for j in A for i in j]) 结果将是: Counter({1: 1, 3: 2, 5: 2, 2: 1}) 我想你指的是一
A=[[1,3,5],[2,3,5]]
我想知道使用计数器函数的每个元素1,2,3,5的频率
我想得到计数器('3':2,'5':2,'1':1,'2':2)的结果。使用计数器试试这个:
from collections import Counter
A = [[1,3,5],[2,3,5]]
result = Counter([i for j in A for i in j])
结果将是:
Counter({1: 1, 3: 2, 5: 2, 2: 1})
我想你指的是一张名单
A=[[1,3,5],[2,3,5]]
如果是这样,可以使用numpy将其转换为展平阵列
import numpy
#turn A into a numpy array
arr =numpy.array(A)
#get the unique values and their counts - ravel flattens an array
unique,counts = numpy.unique(arr.ravel(),return_counts=True)
my_counts = dict(zip(unique,counts))
my_counts
>>>{1: 1, 2: 1, 3: 2, 5: 2}
计数器
支持加法,内置的和有一个参数,即ints的0元素。计数器的零元素就是Counter()
。因此,您可以通过
from collections import Counter
A = [[1,2,5], [2, 3, 5]]
sum(Counter(l) for l in A, Counter())
给予
这也可以通过Map Reduce来解决,其中Map
是计数器的应用
from collections import Counter
from functools import reduce
A = [[1,2,5], [2, 3, 5]]
counters = [Counter(l) for l in A]
reduce(lambda x,y: x+y, counters)
给予
首先,列表是不可散列的,因此A
不能是集合。
让我们把它列成一个列表
然后,我们将计数器
应用于通过链接子列表获得的序列
永远不要重新发明轮子:itertools提供了伟大的解决方案
import collections as co
import itertools as it
A = [[1,3,5],[2,3,5]]
cnt = co.Counter(it.chain.from_iterable(A))
print(cnt)
产生
Counter({3: 2, 5: 2, 1: 1, 2: 1})
这是无效的语法:A={[1,3,5],[2,3,5]}
所以我的意思是有一个由列表组成的数据集,我想知道关于datasetCounter的元素的频率不是一个函数,它是一个专用字典。数据集是如何定义的?值2
只出现一次,而不是两次。欢迎。请检查答案旁边的灰色按钮并将其变为绿色:)@tedsong
import collections as co
import itertools as it
A = [[1,3,5],[2,3,5]]
cnt = co.Counter(it.chain.from_iterable(A))
print(cnt)
Counter({3: 2, 5: 2, 1: 1, 2: 1})