2011-06-17 333 views
5

好吧,这是一个非常简单的问题,我在这里找不到解决方案;在python中将两个数组合并成一个矩阵并排序

我有两个表A和B

A=(0,1,2,3,...,N-1) (N elements) 
B=(-50,-30,-10,.....,-45) (N elements) 

我想创建一个新的结构,类型的二维矩阵“C”用2×N个元素,以便

C(0)=(0,-50) 
C(1)=(1,-30) 
... 
C(N)=(N-1,-45) 

我做不到得到这个,因为我没有看到一个简单的方法来建立这样的矩阵。

然后我想获得所有的B传来的元素从最高排序,以一个新的矩阵“d”最低等

D(0)=(0,-50) 
D(1)=(N-1,-45) 
D(2)=(1,-30) 
... 

我怎么能做到这一点?

P.S.一旦我得到“D”,我怎么能把它分成两个字符串A2和B2,就像第一个字符串?这种

A2=(0,N-1,1,...) 
B2=(-50,-45,-30,...) 

回答

9
C = zip(A, B) 
D = sorted(C, key=lambda x: x[1]) 
A2, B2 = zip(*D) 

或全部一行:

A2, B2 = zip(*sorted(zip(A,B), key=lambda x: x[1])) 
+0

太棒了!最后一个问题,我怎么能把新的“D”分成新的A2和B2? – flow

+0

第一次错过了最后一位,我编辑了我的答案以包含它。 –

相关问题