我有以下 2D numpy 数组:array([[1 0] [2 0] [4 0] [1 1] [2 1] [3 1] [4 2])我想用第二个值的值对第一列的 ID 进行排序,很糟糕,我回来了:array([[1 0] [1 1] [2 0] [2 1] [3 1] [4 0] [4 2]])我得到了 O(n^2) 的复杂性,并希望进一步改进它。
2 回答
HUH函数
TA贡献1836条经验 获得超4个赞
对列表列表进行排序的更好方法:
import numpy as np
a = np.array([[1, 0], [2 ,0], [4 ,0], [1 ,1], [2 ,1], [3 ,1], [4 ,2]])
s_a = np.asarray(sorted(a, key=lambda x: x[0]))
print(s_a)
输出:
[[1 0]
[1 1]
[2 0]
[2 1]
[3 1]
[4 0]
[4 2]]
犯罪嫌疑人X
TA贡献2080条经验 获得超4个赞
试试下面的代码,希望这会有所帮助:
a = np.array([[1, 0],
[2 ,0],
[4 ,0],
[1 ,1],
[2 ,1],
[3 ,1],
[4 ,2]])
np.sort(a.view('i8,i8'), order=['f0'], axis=0).view(np.int)
输出将是:
array([[(1, 0)],
[(1, 1)],
[(2, 0)],
[(2, 1)],
[(3, 1)],
[(4, 0)],
[(4, 2)]])
添加回答
举报
0/150
提交
取消