首页 > 解决方案 > 如何在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 的位置)谢谢!

标签: pythonarraysnumpymultidimensional-arraynumpy-ndarray

解决方案


您可以使用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 ]

推荐阅读