Python Numpy对数组中的项进行计数并存储在字典中
假设我有多个numpy数组,如:Python Numpy对数组中的项进行计数并存储在字典中,python,arrays,numpy,dictionary,count,Python,Arrays,Numpy,Dictionary,Count,假设我有多个numpy数组,如:[1、2、4、7、1、4、6、8、1、8、2、5] 我想计算每个项目在数组中出现的次数,并将结果存储在字典中: {1:3,2:2,3:0,4:2,5:1,6:1,7:1,8:2} 有没有比简单地在数组上循环并计数项目并将它们存储在字典中更快的方法呢?Numpy的智慧在于,它具有以下功能: np.unique(x, return_counts=True) 它不会返回字典,但您可以轻松地将结果转换为字典。您可以使用count: MyList = [1, 2, 4,
[1、2、4、7、1、4、6、8、1、8、2、5]
我想计算每个项目在数组中出现的次数,并将结果存储在字典中:
{1:3,2:2,3:0,4:2,5:1,6:1,7:1,8:2}
有没有比简单地在数组上循环并计数项目并将它们存储在字典中更快的方法呢?Numpy的智慧在于,它具有以下功能:
np.unique(x, return_counts=True)
它不会返回字典,但您可以轻松地将结果转换为字典。您可以使用count:
MyList = [1, 2, 4, 7, 1, 4, 6, 8, 1, 8, 2, 5]
my_dict = {i:MyList.count(i) for i in MyList}
print(my_dict)
这肯定会奏效的
你会发现更多的信息
我认为下面的方法是最简单的
from collections import Counter
MyList = [1, 2, 4, 7, 1, 4, 6, 8, 1, 8, 2, 5]
print(Counter(MyList))
产出将是
计数器({1:3,2:2,4:2,8:2,7:1,6:1,5:1})您可以在熊猫中执行此操作
>>将熊猫作为pd导入
>>>a=pd.系列([1,2,4,7,1,4,6,8,1,8,2,5])
>>>a.从数值计数()到数值
{1: 3, 8: 2, 4: 2, 2: 2, 7: 1, 6: 1, 5: 1}
或者可能?这是否回答了您的问题?如果值是有界的,您可以只使用np.bincount
。至少在这个小示例中,collections.Counter
更快。这确实有效。它也是O(N^2)。因此,不要将其用于大型列表