作者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/cn.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