NumPy 教程

NumPy 笔记

numpy 根据数组的值进行聚合统计(如每个值的个数)

numpy 笔记 numpy 笔记


如何从 numpy 数组中,统计每个值出现的个数,可以利用 python 标准库的 collections 模块提供的计数器类 Counter,也可以通过 numpy 的 unique 函数进行操作;如 numpy 数组的每个值对应样本特征索引时,可以先统计特征的分布进行数据分析。

collections.Counter

collections 模块的 Counter 对象可以支持针对 numpy 数组的快速计数,它本身是 dict 的子类,具体示例如下:

import numpy as np
from collections import Counter

arr = np.array([1, 2, 6, 8, 2, 4, 7, 9, 1, 2, 5, 6, 8, 8, 8])
counter = Counter(arr)
print(counter)

#   返回一个列表,包含 counter 中 n 个最大数目的元素
print(counter.most_common(3))

输出如下:

Counter({8: 4, 2: 3, 1: 2, 6: 2, 4: 1, 7: 1, 9: 1, 5: 1})
[(8, 4), (2, 3), (1, 2)]

numpy 的 unique 函数

也可以用 numpy 的 unique 函数,该函数多用于数组值去重,但是通过设置 return_counts=True 可以作为值计数用,具体示例如下:

import numpy as np
from collections import Counter

arr = np.array([1, 2, 6, 8, 2, 4, 7, 9, 1, 2, 5, 6, 8, 8, 8])

unique, counts = np.unique(arr, return_counts=True)
print(unique)
print(counts)
print(np.asarray((unique, counts)).T)

输出如下:

[1 2 4 5 6 7 8 9]
[2 3 1 1 2 1 4 1]
[[1 2]
 [2 3]
 [4 1]
 [5 1]
 [6 2]
 [7 1]
 [8 4]
 [9 1]]