在 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 中对向量进行排序的主要内容,如果未能解决你的问题,请参考以下文章