python - 如何找到 n 维 numpy 数组的第 i 个最大元素的索引?
问题描述
我知道如何找到 n 维数组的最大元素的索引。
让我们举个例子:
a=np.asarray([[1,7,-4],[9,-11,-17]])
然后(来源):
from numpy import unravel_index
unravel_index(a.argmax(), a.shape)
返回:
(1, 0)
确实a[1,0]
是9
,这是数组中的最高元素a
,所以我们很好。
我还能够弄清楚如何找到一维 numpy 数组(using)的第 i 个最大元素的索引:
a = np.array([1, 3, 2, 4, 5])
i=3 # we want the third largest element, for example
a.argsort()[-i]
这返回1
,这很好,因为a[1]=3
这确实是 的第三大元素a
。
我想把这两个结合起来。所以如果我有
a=np.asarray([[1,7,-4],[9,-11,-17]])
我想得到一个输出,告诉我数组的第 i 个最大元素的索引a
,例如,如果i=3
,输出应该是[0,0]
,因为a[0,0]=1
是 的第 i 个(第三个)最大元素a
。
我怎样才能做到这一点?
解决方案
好吧,要获得一些最大或任何一个的索引,您可以使用 where:
通过webDev添加到上述答案:
import numpy as np
i=2
a=np.asarray([[1,7,-4],[9,-11,-17]])
flat=a.flatten()
flat.sort()
tryvalue= flat[-i]
i, j = np.where(a == tryvalue)
print(i,j)
这会给你:
[0] [1]
我的意思是您可以自己更改您希望这些索引的样子(元组或其他)。
推荐阅读
- wordpress - 当 /var/www/html 已经安装在主机中时,如何使用带有 wp-cli 容器的 wordpress 容器?
- javascript - 如何在 TypeScript 中正确键入“省略”函数以避免错误消息?
- javascript - 如何使用 unirest setState 做出反应
- android - 远程设备上的 Google Chrome 检查器无法正常工作
- php - php从网页解析字符串
- reactjs - Jenkins构建脚本编译成功但找不到生成的构建目录
- java - 如何在 java 中使用 Oauth Graph Service Client api 检索 office 365 邮件文件(如图像、文本文件等)附件?
- php - 为什么它只显示变量“voornaam”的值?
- javascript - 两条线的交点,一种情况有效,另一种情况无效
- flutter - 为 SnackBar 添加阴影 (Flutter)