如何找到 Numpy 数组中具有某个值 X 的百分比?

Con*_*nor 0 python arrays numpy vectorization percentage

假设我有一个 numpy 数组:

array = np.array(['Fe', 'Pt', 'Ce', 'Nd', 'Pt', 'Fe', ..., 'Pt', 'Ce', 'Fe', 'Fe'])
Run Code Online (Sandbox Code Playgroud)

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

percentage = np.sum(array = 'Fe')/array.shape[0]*100
Run Code Online (Sandbox Code Playgroud)

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

理想情况下我想要这样的东西:

percentages = np.some_operation(array)
Run Code Online (Sandbox Code Playgroud)

它产生如下输出:

percentages = {'Fe': 25, 'Pt': 15, 'Nd': 45, 'Ce': 15}
Run Code Online (Sandbox Code Playgroud)

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

Ran*_*Guy 7

只需使用return_counts以下参数np.unique

uniques, counts = np.unique(array, return_counts=True)
Run Code Online (Sandbox Code Playgroud)

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

percentages = dict(zip(uniques, counts * 100 / len(array)))
Run Code Online (Sandbox Code Playgroud)