Python 如何获取多维numpy数组中最大n值的索引

Python 如何获取多维numpy数组中最大n值的索引,python,arrays,algorithm,numpy,multidimensional-array,Python,Arrays,Algorithm,Numpy,Multidimensional Array,我想得到多维numpy数组中最大n值的索引。为了获得一维numpy数组中最大n值的索引,我发现。在python的交互式shell中测试后,似乎瓶颈.argpartsort对多维numpy数组没有影响。为了获取多维numpy数组中最大值的索引,我发现。它不能得到最大的n。我可以给出的方法是将多维numpy数组转换为{value:index}(由元组表示的索引)列表,然后根据值对列表排序,并获取其索引。还有更简单或更高性能的吗?我无法访问瓶颈,因此在本例中,我使用的是argsort,但您应该能够以相

我想得到多维numpy数组中最大n值的索引。为了获得一维numpy数组中最大n值的索引,我发现。在python的交互式shell中测试后,似乎
瓶颈.argpartsort
对多维numpy数组没有影响。为了获取多维numpy数组中最大值的索引,我发现。它不能得到最大的n。我可以给出的方法是将多维numpy数组转换为
{value:index}
(由元组表示的索引)列表,然后根据值对列表排序,并获取其索引。还有更简单或更高性能的吗?

我无法访问
瓶颈
,因此在本例中,我使用的是
argsort
,但您应该能够以相同的方式使用它:

#!/usr/bin/env python
import numpy as np
N = 4
a = np.random.random(20).reshape(4, 5)
print(a)

# Convert it into a 1D array
a_1d = a.flatten()

# Find the indices in the 1D array
idx_1d = a_1d.argsort()[-N:]

# convert the idx_1d back into indices arrays for each dimension
x_idx, y_idx = np.unravel_index(idx_1d, a.shape)

# Check that we got the largest values.
for x, y, in zip(x_idx, y_idx):
    print(a[x][y])

重塑为一维,然后搜索,然后通过涉及重塑前维度的算术计算获得原始索引?可能
展平()
原始数组,然后使用1D解决方案,最后使用原始形状计算真实的nD索引?第二个链接有什么问题?你能给我们看看这个多维数组的一部分吗?我不明白为什么它不起作用…@plonser第二个链接只返回多维numpy arrayUse的最大值的索引,而不是
argsort
,您将赢得我的支持票。;-)