【问题标题】:index of N highest elements from a list of numpy array [duplicate]numpy数组列表中N个最高元素的索引[重复]
【发布时间】:2020-05-30 08:11:15
【问题描述】:

我需要一个函数,它从 numpy 数组的矩阵/列表中返回 N 个最高元素的索引(行和列)。

假设我有以下矩阵:

a = [[4,2,3], 
     [5,0,3]]

我想获取 N 个最高元素的索引(行、列)列表。例如,如果我想要 4 个最高元素的索引,函数应该返回

[(1,0), (0,0), (0,2), (1,2)]

我已经尝试如下实现,但它返回一个(值,行号)列表,这是我不需要的

for i, sub_list in enumerate(a):
    max_list.append((max(sub_list), i))

【问题讨论】:

标签: python python-3.x numpy


【解决方案1】:

我会变平,argsortunravel_index


f = a.ravel().argsort()
[*zip(*np.unravel_index(f[-n:], a.shape))]

[(0, 2), (1, 2), (0, 0), (1, 0)]

正如 yatu 所指出的,如果您有一个更大的数组,而n 则比较小,您可以将argsort 替换为np.argpartition(a.ravel(), -n)

【讨论】:

    猜你喜欢
    • 2013-08-07
    • 1970-01-01
    • 2018-09-01
    • 2017-08-26
    • 2018-04-06
    • 1970-01-01
    • 1970-01-01
    • 2017-12-01
    相关资源
    最近更新 更多