2011-06-17 377 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

第一次錯過了最後一位,我編輯了我的答案以包含它。 –

相關問題