首页 > 解决方案 > 你怎么能找到一个 Numpy 数组的百分比有某个值 X?

问题描述

假设我有一个 numpy 数组:

array = np.array(['Fe', 'Pt', 'Ce', 'Nd', 'Pt', 'Fe', ..., 'Pt', 'Ce', 'Fe', 'Fe'])

其中数组中的每个条目是“Fe”、“Pt”、“Ce”或“Nd”。我了解如何获取单个条目的百分比,例如:

percentage = np.sum(array = 'Fe')/array.shape[0]*100

但是,如果我想获取每个唯一字符串值的百分比怎么办?有没有办法将该操作向量化并将其推广到任意数量的唯一字符串值?

理想情况下,我想要类似的东西:

percentages = np.some_operation(array)

产生如下输出:

percentages = {'Fe': 25, 'Pt': 15, 'Nd': 45, 'Ce': 15}

它不必是字典的形式,只要清楚哪个百分比属于哪个元素即可。我打算处理的数组的长度可以是 1,000 到 1,000,000 个条目。

标签: pythonarraysnumpyvectorizationpercentage

解决方案


只需使用return_counts来自的参数np.unique

uniques, counts = np.unique(array, return_counts=True)

然后从您的 2 个数组创建一个字典:

percentages = dict(zip(uniques, counts * 100 / len(array)))

推荐阅读