繁体   English   中英

如何更好地计算一个列表在另一个列表中的出现次数,然后使用 count 列出每个元素的结果

[英]How to better count occurrences of a list in another list and then list the results for each element using count

我想要一种faster的方法让 Pandas python 计算listA中每个元素的出现次数listB并将计数次数计入listC 例如

 listA = [1,2,3,4,5,6,7] listB = [1,1,5,4,8,3,4,7,9,2,1,4,7,6,2,4,5,6,3] output: listC = [3,2,2,4,2,2,2]
数字 1 出现 3 次,数字 2 出现 3 次,以此类推。 这只是我实际工作中的一个示例listA800 000元素,而listB2million个元素。 我正在使用以下代码,但使用 Pandas 处理需要很长时间。

 listC =[listB.count(x) for x in listA]

您可以使用collections.Counter来加速任务:

from collections import Counter

listA = [1, 2, 3, 4, 5, 6, 7]
listB = [1, 1, 5, 4, 8, 3, 4, 7, 9, 2, 1, 4, 7, 6, 2, 4, 5, 6, 3]

c = Counter(listB)

listC = [c.get(v) for v in listA]
print(listC)

印刷:

[3, 2, 2, 4, 2, 2, 2]

或者:使用np.bincount

count_arr = np.bincount(listB)
print([count_arr[x] for x in listA])

印刷:

[3, 2, 2, 4, 2, 2, 2]

我想对大量数据进行排序的想法是不可能的?

只是我认为如果对数据进行排序,count()可能会工作得更快,因为相似的值放在相邻的 position 中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM