让我们说我有一个2D numpy数组,我想把它排序好像它是一个标准的Python列表,即将它们的行本身放入(词典)顺序,而不是沿轴的单元格。所以从这个:
>>> a = np.array([[1, 3], [2, 1], [1, 2]]
array([[1, 3],
[2, 1],
[1, 2]])
我想到达这个:
array([[1, 2],
[1, 3],
[2, 1]])
不幸的是,这并不容易:
>>> np.sort(a, axis=0)
array([[1, 1],
[1, 2],
[2, 3]])
>>> sorted(list(a))
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
>>> np.sort(list(a))
array([[1, 1],
[1, 2],
[2, 3]])
我知道这可能(应该!)是超级基本的,但我不能,因为我的生活,弄清楚如何去做。谢谢!
答案 0 :(得分:0)
好的,没关系,重复Sorting a 2D numpy array by multiple axes;只需使用lexsort
(或该问题下的其他替代方案):
>>> a[np.lexsort((a[:, 1], a[:, 0]))]
array([[1, 2],
[1, 3],
[2, 1]])