【问题标题】:Python: Sort 2d ndarray and return a list of index in tuplesPython:对二维数组进行排序并返回元组中的索引列表
【发布时间】:2023-03-26 07:40:01
【问题描述】:

我尝试迭代 2d ndarray 的值并获取索引。 因此,我尝试对 2d ndarray 进行排序。还使用 numpy 的 (arg-) 排序参数尝试了不同的东西。

import numpy
arr = numpy.array([[2,11,4], [33,9,5], [3,21,123]])
print(arr.argsort(axis=None)

这会返回:

array([0, 6, 2, 5, 4, 1, 7, 3, 8])

但我想返回一个这样的列表,其中每个列表元素都包含这样的二维索引:

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

【问题讨论】:

    标签: python arrays numpy sorting


    【解决方案1】:

    使用numpy的unravel_index,我们可以做到以下几点:

    import numpy as np
    arr = np.array([[2,11,4], [33,9,5], [3,21,123]])
    ix, jx = np.unravel_index(arr.argsort(axis=None), arr.shape)
    print(list(zip(ix,jx)))
    

    哪些输出

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

    对于这个例子,根据要求。

    【讨论】:

    • 非常适合我
    猜你喜欢
    • 2015-04-12
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多