python - 如何不仅选择 `numpy.ndarray` 的最大值,而且选择 python 中的前 3 个最大值?

标签 python select numpy max

我有一个存储在变量 row 中的浮点值列表(正值和负值)类型 <type 'numpy.ndarray'> .

max_value = max(row)

给我 row 的最大值.是否有一种优雅的方式来选择前 3 个(5、10...)值?

我想到了

  1. row 中选择最大值
  2. 删除 row 中的最大值
  3. row 中选择最大值
  4. 删除 row 中的最大值
  5. 等等

但这肯定是一种丑陋的风格,根本不是 pythonic。 pythonistas 对此怎么说? :)


编辑

我不仅需要最大的三个值,还需要位置(row 中的索引)。对不起,我忘了说...

最佳答案

我会使用 np.argsort

a = np.arange(10)
a[np.argsort(a)[-3:]]

编辑 要同时获得位置,只需使用:

ii = np.argsort(a)[-3:] # positions
vals = a[ii]            # values

关于python - 如何不仅选择 `numpy.ndarray` 的最大值,而且选择 python 中的前 3 个最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6256178/

相关文章:

python - 在使用 numpy.median 之前对数据进行排序

php - 如何向用户呈现大量重复数据

python - 是否可以在 Scipy 的 Mann-Whitney U 检验中指定替代假设?

Python 将列表转换为元组列表

python - Eclipse Python 开发的颜色主题

c - 当nfds大于fd_set中的位数组长度时,select会做什么?是否可以?

mysql - 基本 SELECT 查询 - 来自多个数据库的结果

python - 在 Python 或 numpy 中使用不同的分隔符

python - 在 matplotlib 中指定图形大小(以厘米为单位)

python - 是否可以将 self 传递给外部函数