作者JetaimeMia (你好)
看板Python
標題[問題] 多維排列問題
時間Wed Apr 8 00:02:09 2015
各位大大好
小魯現在有個多維排序的問題
假設有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://webptt.com/m.aspx?n=bbs/Python/M.1428422533.A.EE5.html
1F:→ darkgerm: 照著另一個來排序?什麼意思? 04/08 00:17
例如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
2F:→ ccwang002: 能用 numpy 嗎? 04/08 01:26
3F:→ ccwang002: sorted_ix = np.argsort(a, axis=1) 04/08 01:38
4F:→ ccwang002: _ix = np.arange(a.shape[0])[:, np.newaxis] 04/08 01:38
5F:→ ccwang002: sorted_a = a[_ix, sorted_ix] 04/08 01:38
6F:→ ccwang002: followed_b = b[_ix, sorted_ix] 04/08 01:38
8F:→ ccwang002: 這樣能把 a 的順序同步到 b 上,剩下怎麼組合就看你了 04/08 01:42
喔喔 謝謝! 我剛也是用argsort解決了 不過比較爛 哈
這篇還有你的方法似乎更好 滿詳細的 謝謝囉!
※ 編輯: JetaimeMia (219.85.113.105), 04/08/2015 04:13:10