如何计算Numpy数组中每个唯一值对应的占比百分比
Numpy 数组字符串唯一值占比向量化计算方案
可以通过np.unique的内置参数实现完全向量化的统计,适配任意数量的唯一值场景,且对100万长度以内的数组处理效率极高。
实现代码
import numpy as np # 示例输入数组 arr = np.array(['Fe', 'Pt', 'Ce', 'Nd', 'Pt', 'Fe', 'Pt', 'Ce', 'Fe', 'Fe']) # 向量化获取唯一值与对应出现次数 unique_elements, counts = np.unique(arr, return_counts=True) # 计算各唯一值占比(百分比形式) percentages = counts / arr.size * 100 # 如需转换为字典格式可直接拼接 result_dict = dict(zip(unique_elements, percentages))
输出示例
执行上述代码后result_dict的输出符合要求的格式:
{'Ce': 20.0, 'Fe': 40.0, 'Nd': 10.0, 'Pt': 30.0}
补充说明
- 你之前示例中的单值占比代码存在笔误,正确写法应为
np.sum(array == 'Fe')/array.shape[0]*100,需要用双等号做布尔判断 - 该方案底层为C实现的向量化操作,处理100万长度的数组耗时在毫秒级,完全满足性能需求
内容的提问来源于stack exchange,提问作者Connor
相关产品推荐
相关产品推荐

