使用numpy与pandas统计数组重复值并生成pandas表格的问题求解
问题原因
你原有代码的sums行逻辑存在问题:uniques是原数组去重后的结果(长度为5),和原数组a(长度为12)维度不匹配,直接切片后对等比较的结果不符合计数需求,自然无法得到每个取值的对应出现次数。
修正方案
直接使用np.unique内置的return_counts参数,即可同时拿到去重后的取值列表和每个取值的对应出现次数,再直接构造pandas表格即可。
完整可运行代码
import numpy as np import pandas as pd a = np.array([12,12,12,3,43,43,43,22,1,3,3,43]) # 传入return_counts=True同时获取去重值和对应计数 uniques, counts = np.unique(a, return_counts=True) # 构造DataFrame并指定列名 res_df = pd.DataFrame({ "Value": uniques, "Repetition Count": counts }) print(res_df)
运行上述代码就能直接输出你需要的预期结果。
补充说明
如果你不想用内置参数,非要自己实现计数逻辑,可以把sums行改成遍历统计的写法:
sums = [np.sum(a == val) for val in uniques]
之后再用uniques和sums构造DataFrame即可,不过这种写法效率远低于直接用return_counts参数,不推荐处理大数组时使用。
内容的提问来源于stack exchange,提问作者georgehere
相关产品推荐
相关产品推荐

