在 np.ndarray 中对向量进行排序

Posted

技术标签:

【中文标题】在 np.ndarray 中对向量进行排序【英文标题】:Sort vectors in np.ndarray [duplicate] 【发布时间】: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 个元素对其进行排序?

【问题讨论】:

【参考方案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 指出了一个相关的解决方案

以上是关于在 np.ndarray 中对向量进行排序的主要内容,如果未能解决你的问题,请参考以下文章

在c ++中对向量的向量进行排序

如何在 C++ 中对向量组元素进行排序?

在 C++ 中对向量进行分组排序

在向量c ++中对复数进行排序

在C ++中对字符向量进行排序并将大写字母和小写字母视为相同的最佳方法?

在 C++ 中对结构数组进行排序