【问题标题】:Sort vectors in np.ndarray [duplicate]在 np.ndarray 中对向量进行排序
【发布时间】:2019-10-10 07:53:50
【问题描述】:

我是 python 新手。这似乎是一个超级简单的问题,但我找到的类似答案都与我的案例无关。

我有一个 np.ndarray 对象,其中每一行代表一个向量,如下所示:

vectors = [[2, 0, 1]
           [1, 1, 2]
           [3, 2, 0]]

我想根据第一个组件对这些向量进行排序,而不更改向量本身。 IE。我只想交换整行,这样:

 sorted_vectors = [[1, 1, 2]
                   [2, 0, 1]
                   [3, 2, 0]]

我尝试过使用 np.ndarray.sort,但是这种方法会独立地对每一列进行排序,从而有效地破坏了向量。

 vectors.sort(axis=0) = [[1, 0, 0]
                         [2, 1, 1]
                         [3, 2, 2]]

是否有一种排序方法可以将行或列视为整个对象并根据第 n 个元素对其进行排序?

【问题讨论】:

    标签: python numpy-ndarray


    【解决方案1】:

    你可以试试

    import numpy
    
    vectors = [[2, 0, 1],
               [1, 1, 2],
               [3, 2, 0]]
    
    vectors = sorted(vectors)
    print (vectors)
    

    【讨论】:

    • 这不适用于 numpy 数组:ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()。但是@cs95 指出了一个相关的解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多