python - 你怎么能找到一个 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 个条目。
解决方案
只需使用return_counts
来自的参数np.unique
:
uniques, counts = np.unique(array, return_counts=True)
然后从您的 2 个数组创建一个字典:
percentages = dict(zip(uniques, counts * 100 / len(array)))
推荐阅读
- c# - C# 数学库(System.Numerics 与 Math.NET)
- asp.net-mvc - 使用 EF Core 3 进行 ASP.NET Core 3 远程验证
- c - C程序不会正确划分两个scanf输入
- javascript - 如何检查用户是否选择了一个属性
- cassandra - Cassandra 列名抽象,22 或 220 个列名。后果是什么?
- verilog - 如何在 Verilog 中使用参数化位宽作为常数值?
- reactjs - TypeError:this.props.mutate 不是函数
- android - 在 android Room 中使用存储库模式访问数据库
- spring - 使用 Scala 编译时在 Spring Boot 中为 @ComponentScan 注解添加 `excludeFilters` 时引发错误
- amazon-s3 - 如何从 Airflow 的 S3sensor 中排除 S3 中的文件夹?