如何计算数据集的元素由列表组成

时间:2019-11-30 07:03:18

标签: python list count

有一个数据集示例A = [[1,3,5],[2,3,5]] 我想使用Counter函数知道每个元素1,2,3,5的频率。

我想得到Counter('3':2 ,'5':2, '1':1, '2':2)

的结果

4 个答案:

答案 0 :(得分:1)

尝试使用<el-collapse v-model="activeName" accordion> <el-collapse-item v-for="(item, index) in experience" :title="item.company" :name="index + 1" :key="index" > <div> content content content </div> </el-collapse-item> </el-collapse>

Counter

结果将是:

from collections import Counter

A = [[1,3,5],[2,3,5]]
result = Counter([i for j in A for i in j])

答案 1 :(得分:1)

首先,所有列表不可散列,因此A不得为集合。 因此,使它成为列表列表。

然后我们将Counter应用于通过链接子列表获得的序列。

永远不要重新发明轮子: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})

答案 2 :(得分:0)

我认为您的意思是列表列表?

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}

答案 3 :(得分:0)

Counter支持加法,并且内置的总和具有一个start参数,即int的0元素。计数器的零元素只是Counter()。因此,您可以通过

解决此问题
from collections import Counter
A = [[1,2,5], [2, 3, 5]]
sum(Counter(l) for l in A, Counter())

给予

Counter({1: 1, 3: 2, 5: 2, 2: 1})

这也可以通过Map-Reduce解决,其中mapCounter的应用。

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)

给予

Counter({1: 1, 3: 2, 5: 2, 2: 1})