2012-04-16 73 views
6

如何獲取matrix..Any容易,算法的方式做到這一點的轉...蟒蛇矩陣轉置和zip

1問題:

Input a=[[1,2,3],[4,5,6],[7,8,9]] 
Expected output a=[[1, 4, 7], [2, 5, 8], [3, 6, 9]] 

第二個問題:

Zip給了我下面說的下面的輸出,當我不知道數組中有多少元素時,我如何壓縮,在這種情況下,我知道3個元素a [0],a [1],a [2]我壓縮[n]元素

>>> zip(a[0],a[1],a[2]) 
[(1, 4, 7), (2, 5, 8), (3, 6, 9)] 

回答

11

問題的答案:

>>> import numpy as np 
>>> first_answer = np.transpose(a) 
>>> second_answer = [list(i) for i in zip(*a)] 

感謝AFG的幫忙

+0

第一個問題的解決方案怎麼樣 – Rajeev 2012-04-16 07:06:47

+5

@Rajeev這是_both_問題的答案。 'zip(* a)'是矩陣轉置,它自己也是反轉。 – agf 2012-04-16 07:06:50

+0

@agf:第一個解決方案的輸出是數組的數組,而不是元組。.. – Rajeev 2012-04-16 07:07:51

3

您可以使用numpy.transpose

numpy.transpose

>>> import numpy 
>>> a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 
>>> numpy.transpose(a) 
array([[1, 4, 7], 
     [2, 5, 8], 
     [3, 6, 9]]) 
10

使用zip(*a)

>>> zip(*a) 
[(1, 4, 7), (2, 5, 8), (3, 6, 9)] 

工作原理:zip(* a)等於zip(a [0],a [1],a [2])。

+1

如果你有'map(list,zip(* a))''''''''''''''''''''' 。 – martineau 2014-02-17 13:09:41