2014-03-14 168 views
0

我有一個反轉矩陣值

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

我想不過來打印「一個」的類似矩陣形式一樣縱列:

1 4 7 
2 5 8 
3 6 9 

有沒有辦法做到這一點?

回答

1

可以打印row-major矩陣是這樣的:

def print_row_maj(m): 
    for row in m: 
     print ' '.join(str(x) for x in row) 

這一切再加sashkello's answer打印您的調換(不倒!)矩陣。

def transpose(m): 
    return zip(*m) 

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

print_row_maj(transpose(a)) 
4

可以使用zip轉吧:

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

應該適用於任何形狀,不僅方陣。唯一的情況是,當a只有一行時。

可以使用join打印在您想要的形式:

for el in a: 
    print " ".join(str(s) for s in el) 

或者,通過@ssm的建議,一個班輪:

print '\n'.join(' '.join(map(str,x)) for x in zip(*a)) 

,最後使用numpy的:

print '\n'.join(' '.join(map(str,x)) for x in np.transpose(a)) 
+0

另外,它需要被轉換成字符串,像這樣:' '\ n'.join(['」。加入(地圖(STR X))對於x中, zip(* a)])'。很好的使用zip(*)! – ssm

2

如果您只是想打印,您可以執行以下操作,但我確實假設matr ix是矩形的。

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

for i in xrange(len(a[0])): 
    print " ".join(str(a[j][i]) for j in xrange(len(a))) 
+0

@JonathonReinhart,夠了。儘管如此,我正在解釋這個問題。如果用戶接受其他答案,我會刪除這一個。 – merlin2011

+0

@ user2864740,我刪除了硬編碼邊界。 – merlin2011

0
var arrnew = new Array(); 
arrnew = [[2, 3, 4], [4, 5, 7], [5, 6, 9]]; 

for (var i = 0; i < arrnew.length; i++) { 
console.log(arrnew[i][0] + " " + arrnew[i][1] + " " + arrnew[i][2]); 

}