大家好

最近突然有這需求
np array 要如何多條件排序資料呢?
例如我有一組3D座標列表
shape 為 [X, 3]
如果我想讓他先從X開始排
然後Y 然後Z 這樣

搜尋一下找到這個

https://stackoverflow.com/questions/51370327/numpy-sort-2d-rearrange-rows-without-changing-values-in-row

import numpy as np
# 要把排序順序反過來放
# nPoints[:, 0] 代表 X 座標-以此類推
newSort = np.lexsort((nPoints[:, 2], nPoints[:, 1], nPoints[:, 0]))

# 原始資料
nPoints = [[38.5 16. 22.5 ]
[41. 16. 19.25]
[43.5 16. 22.5 ]
[41. 16. 25.75]
[38.5 18. 19.25]
[38.5 20. 22.5 ]
[38.5 18. 25.75]
[41. 20. 19.25]
[43.5 18. 19.25]
[43.5 20. 22.5 ]
[41. 20. 25.75]
[43.5 18. 25.75]
[41. 14. 22.5 ]
[36. 18. 22.5 ]
[41. 18. 16. ]
[41. 22. 22.5 ]
[46. 18. 22.5 ]
[41. 18. 29. ]]

# 排序後資料
nPoints = [[36. 18. 22.5 ]
[38.5 16. 22.5 ]
[38.5 18. 19.25]
[38.5 18. 25.75]
[38.5 20. 22.5 ]
[41. 14. 22.5 ]
[41. 16. 19.25]
[41. 16. 25.75]
[41. 18. 16. ]
[41. 18. 29. ]
[41. 20. 19.25]
[41. 20. 25.75]
[41. 22. 22.5 ]
[43.5 16. 22.5 ]
[43.5 18. 19.25]
[43.5 18. 25.75]
[43.5 20. 22.5 ]
[46. 18. 22.5 ]]

給大家參考囉~