首页 > 解决方案 > 将浮点数数组转换为元组数组,其中浮点数作为元组条目之一

问题描述

我有一个浮点数组,我需要返回 N 个最小值的索引。我在想什么(如果有更好的方法,请大声说出来)是将数组转换为元组数组,其中 [0] 条目是原始浮点数,而 [1] 条目是数组中的索引。

然后我按 [0] 条目对数组进行排序,然后对于前 N 个条目,返回 [1] 值。

所以问题是,如何将浮点数组转换为元组数组,其中包含原始数组中的 [0] 条目。我知道如何使用 for 循环来做到这一点,但我问这个问题是为了看看 numpy 是否有一个可以做到这一点的调用。

标签: pythonnumpy

解决方案


如果您想获得 N 个最小值的索引,可以使用 argpartition 函数,例如:

import numpy as np

N = 3
array = np.array([0.0, 0.1, 0.2, 3.0, 0.4, 0.5, 0.1])
smallest_indices = np.argpartition(array, N)[:N]

因此,对于(比如说)N = 3,输出将是:

>>> print(smallest_indices)
[1 0 6]

>>> print(array[smallest_indices])
[0.1 0.0 0.1]

推荐阅读