首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何获得NumPy矩阵中每行N个最小值的索引?

如何获得NumPy矩阵中每行N个最小值的索引?
EN

Stack Overflow用户
提问于 2022-10-14 23:29:45
回答 3查看 53关注 0票数 0

我有以下NumPy矩阵:

代码语言:javascript
运行
AI代码解释
复制
m = np.array([[1, 2, 3, 4],
              [10, 5, 3, 4],
              [12, 8, 1, 2],
              [7, 0, 2, 4]])

现在,我需要这个矩阵中每一行的N(例如,N=2)最低值的指数。因此,通过上面的示例,我期望得到以下输出:

代码语言:javascript
运行
AI代码解释
复制
[[0, 1],
 [2, 3],
 [3, 2],
 [1, 2]]

其中,输出矩阵的行对应于原始矩阵的各个行,输出矩阵的行的元素是对应原始行中N个最低值的索引(最好是按原始矩阵中的值进行升序)。我怎么能在NumPy里做这件事?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-10-14 23:40:02

您可以使用简单的循环方法(不推荐),也可以使用np.argpartition

代码语言:javascript
运行
AI代码解释
复制
In [13]: np.argpartition(m, 2)[:, :2]
Out[13]:
array([[0, 1],
       [2, 3],
       [2, 3],
       [1, 2]])
票数 2
EN

Stack Overflow用户

发布于 2022-10-14 23:39:38

您可以在数组上使用np.argsort,然后将数组分割为N个最小/最高值。

代码语言:javascript
运行
AI代码解释
复制
np.argsort(m, axis=1)[:, :2]
代码语言:javascript
运行
AI代码解释
复制
array([[0, 1],
       [2, 3],
       [2, 3],
       [1, 2]], dtype=int64)
票数 0
EN

Stack Overflow用户

发布于 2022-10-14 23:39:48

试试这个;

代码语言:javascript
运行
AI代码解释
复制
import numpy as np
m = np.array([[1, 2, 3, 4],
              [10, 5, 3, 4],
              [12, 8, 1, 2],
              [7, 0, 2, 4]])

for arr in m:
    print(arr.argsort()[:2])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74077540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档