如何使用numpy.unique获取数值数组中每个唯一值的出现次数?
获取NumPy数组中唯一值的出现次数
嘿,其实你不用额外找其他函数,np.unique()本身就可以直接返回每个唯一值的出现次数!只需要加一个参数就行,我给你详细说说:
核心用法
调用np.unique()时,传入return_counts=True参数,它会返回两个数组:
- 第一个数组是原数组中的唯一值(默认按升序排列)
- 第二个数组是对应每个唯一值的出现次数
举个实际例子看看:
import numpy as np # 创建测试数组 a = np.array([1, 2, 2, 3, 3, 3, 4, 1, 1]) # 获取唯一值和对应次数 unique_values, counts = np.unique(a, return_counts=True) # 输出结果 print("唯一值:", unique_values) print("对应次数:", counts)
运行这段代码会输出:
唯一值: [1 2 3 4] 对应次数: [3 2 3 1]
也就是1出现3次,2出现2次,3出现3次,4出现1次,完美对应上原数组的情况。
额外小技巧
如果你的数组是多维的,np.unique()默认会先把数组扁平化再统计。如果想按特定维度(比如行、列)统计唯一元素的次数,可以加上axis参数:
# 二维数组示例 a_2d = np.array([[1,2], [2,3], [1,2], [3,4]]) # 按行统计唯一行的出现次数 unique_rows, row_counts = np.unique(a_2d, axis=0, return_counts=True) print("唯一行:\n", unique_rows) print("行出现次数:", row_counts)
输出会是:
唯一行: [[1 2] [2 3] [3 4]] 行出现次数: [2 1 1]
这样就能轻松搞定多维数组的行/列级唯一值统计啦!
内容的提问来源于stack exchange,提问作者user297850
相关产品推荐
相关产品推荐

