2011-04-01 31 views
25

eğer tanımlar: Bir 3x3 matris olarakMatrisin sütunları üzerinde yineleme nasıl yapılır? python'da

a = arange(9).reshape(3,3) 

ve yineleme:

for i in a: 

Bu matrisin satırları üzerinde yineleme edeceğiz. Sütunların üzerinde yineleme yapmak için herhangi bir yolu var mı?

+1

Neden sütunların (ya da sıraların) üzerinden yineleme istersiniz? Genel hedefiniz nedir? Belki de bunun için daha açık bir yol vardır. Teşekkürler – eat

+1

Basit Doğrusal cebir dönüştürmeleri örneğin –

+0

Bir örnek göstermek ister misiniz? Bu dönüşümler neden doğrudan matrislerle yapılamaz? Gerçekten kod golf oynamak istiyorsanız – eat

cevap

39

nasıl

for i in a.transpose(): 

hakkında veya daha kısa:

for i in a.T: 

Bu pahalı bakmak ama aslında çok ucuz olabilir (aynı verilerin üzerine bir görünüm verir, ancak şekil ve adım ile izin verilen özellikler).

+4

Veya 'in a.T için teşekkürler. –

0

a iyi oluşturulmuş matris olduğunu varsayarsak, gibi bir şey deneyebilirsiniz:

b = zip(*a) 
for index in b: 
    ... 
+2

Büyükse, 'zip' kullanmak' a.T' ile karşılaştırıldığında çok pahalıdır. Örneğin, 'a' 100x100 ise, zip, aktarımdan 5000x daha yavaştır. 3x3 durum için hala 10x daha yavaş. Nytray'ları python listeleri gibi işlemek yerine, numpy yerleşikleri kullanmak genellikle iyi bir fikirdir. – JoshAdel

İlgili konular