有一个数据集示例A = [[1,3,5],[2,3,5]]
我想使用Counter函数知道每个元素1,2,3,5的频率。
我想得到Counter('3':2 ,'5':2, '1':1, '2':2)
答案 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解决,其中map
是Counter
的应用。
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})