[問題] 多維排列問題

看板Python作者 (你好)時間10年前 (2015/04/08 00:02), 10年前編輯推噓0(008)
留言8則, 2人參與, 最新討論串1/2 (看更多)
各位大大好 小魯現在有個多維排序的問題 假設有2個list或array 每一個裡面又有3*3的元素 e.g. a=[ [9,8,7], [6,5,4], [3,2,1]] b=[ [11,12,13], [14,15,16], [17,18,19]] 我要如何讓b照著a來排序 結果希望像是 [[13,12,11], [7,8,9]] 或是 [[13,7],[12,8],[11,9]]之類的 總之就是一個多維array或list照著另一個來排序 用了sort, sorted,等等在這種多維的情況下不知道是我哪裡寫錯還是怎樣 排不太出來 原本是用一個一個抓出來變一維的再排序的方法 不過在我的code裡面數據一大就會跑得很慢 希望能直接改了再取出來這樣 小魯先謝謝各位了 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 219.85.113.105 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1428422533.A.EE5.html

04/08 00:17, , 1F
照著另一個來排序?什麼意思?
04/08 00:17, 1F
例如A=0,1,3,5,8 B=5,6,4,2,3 A照B排完變成 a=5,8,3,0,1 b=2,3,4,5,6 類似這樣 一維的很簡單 不過多維的我用都怪怪的 ※ 編輯: JetaimeMia (219.85.113.105), 04/08/2015 00:35:27 ※ 編輯: JetaimeMia (219.85.113.105), 04/08/2015 00:36:45

04/08 01:26, , 2F
能用 numpy 嗎?
04/08 01:26, 2F

04/08 01:38, , 3F
sorted_ix = np.argsort(a, axis=1)
04/08 01:38, 3F

04/08 01:38, , 4F
_ix = np.arange(a.shape[0])[:, np.newaxis]
04/08 01:38, 4F

04/08 01:38, , 5F
sorted_a = a[_ix, sorted_ix]
04/08 01:38, 5F

04/08 01:38, , 6F
followed_b = b[_ix, sorted_ix]
04/08 01:38, 6F

04/08 01:39, , 7F

04/08 01:42, , 8F
這樣能把 a 的順序同步到 b 上,剩下怎麼組合就看你了
04/08 01:42, 8F
喔喔 謝謝! 我剛也是用argsort解決了 不過比較爛 哈 這篇還有你的方法似乎更好 滿詳細的 謝謝囉! ※ 編輯: JetaimeMia (219.85.113.105), 04/08/2015 04:13:10
文章代碼(AID): #1L8_-5xb (Python)
討論串 (同標題文章)
文章代碼(AID): #1L8_-5xb (Python)