python - 如何在python Ndarray中获取第一个最小的5个值并获取它们在ndarray中的位置
问题描述
我仍然不知道如何用更少的代码以最好的方式做到这一点,我有一个名为 X 的 Ndarray : array([0.5 , 2 , 3.2 , 0.16 , 3.3 , 10 , 12 , 2.5 , 10 , 1.2 ])我想以某种方式获得最小的 5 个值及其在 X 中的位置,如我想要的那样(0.5、0.16、1.2、2、2.5),并知道它们是 ndarray X 中的第一个和第四个以及第 10 个和第 8 个(实际上是矩阵中一行的值,我想知道最小 5 的位置)谢谢!
解决方案
您可以使用ndarray.argpartition
:
X = np.array([0.5 , 2 , 3.2 , 0.16 , 3.3 , 10 , 12 , 2.5 , 10 , 1.2 ])
n = 5
arg = X.argpartition(range(n))[:n]
print(arg)
# [3 0 9 1 7]
print(X[arg])
# [0.16 0.5 1.2 2. 2.5 ]
推荐阅读
- ruby - 无法使用 ASDF 安装 ruby
- alfresco - 为孩子们创建可公开共享链接的 Alfresco 文件夹规则
- haskell - 无法弄清楚这个简单的兴趣函数需要什么类型的签名
- python - Pandas:仅每分钟更新一秒数据的滚动平均值
- python - 当 pytest.raises 失败时,将自定义消息附加到输出的最佳方法是什么?
- google-bigquery - BigQuery SQL / GIS:扩展半径直到计数大于/等于“N”
- python - Cupy 释放统一内存
- azure - az storage blob upload-batch 的最低权限
- amazon-web-services - AWS EC2 实例“无法访问此站点”,尽管我确实打开了端口 80 和 443
- java - Java中温度转换器的优化