我有一个下面给出的表格的数组A
:
A = [[ 4 3 2 1]
[ 8 7 6 5]
[12 11 10 9]
[16 15 14 13]]
我想按行对此数组进行排序。所需的输出是:
A = [[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]
[13 14 15 16]]
我尝试使用以下代码(但它不起作用):
import numpy as np
A = np.array([[4, 3, 2, 1], [8, 7, 6, 5], [12, 11, 10, 9], [16, 15, 14, 13]])
print A[np.lexsort(A, axis = 1)]
如何按行对此数组进行排序?
答案 0 :(得分:3)
你不清楚“按行排序”是什么意思,但你似乎想要对数组的元素进行排序,你可以通过迭代它并对每个元素进行排序来对其进行排序:
for i in A: i.sort()
如果你还想对外部数组本身进行排序,那么,好吧,对它进行排序:
A.sort()
答案 1 :(得分:1)
Numpy的sort
有一个axis
参数,可用于指定哪个轴已排序。
import numpy as np
A = np.array([[4, 3, 2, 1], [8, 7, 6, 5], [12, 11, 10, 9], [16, 15, 14, 13]])
A.sort(axis=1)
给出:
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]
[13 14 15 16]]
sort
默认使用axis
作为数组的最后一个轴,所以这里它是1
,所以你真的不需要指定axis=1
在这种情况下。
答案 2 :(得分:0)
A = [[ 4, 3, 2, 1],
[12, 11, 10, 9],
[ 8, 7, 6, 5],
[16, 15, 14, 13]]
for i in A:
i.sort()
A.sort()
print A
我假设逐行意味着你也要对外部列表进行排序
答案 3 :(得分:0)
两个不同的答案,都是单行,如下:
sorted_A_1 = sorted(sorted(i) for i in A)
sorted_A_2 = [sorted(i) for i in sorted(A)]
虽然您可能只想修改现有列表,但这些列表都会生成新列表。第一个管道将A中的每个列表排序到排序函数的结果,第二个只是列表理解。
此外,虽然这些可能不比已经发布的答案更清楚,但我个人认为看到解决特定问题的不同方法是有帮助的!