2011-04-01 12 views
25

अजगर में अगर एक को परिभाषित:मैट्रिक्स के कॉलम पर फिर से कैसे करें?

a = arange(9).reshape(3,3) 
एक 3x3 मैट्रिक्स के रूप में

और पुनरावृति:

for i in a: 

यह मैट्रिक्स के पंक्तियों पर पुनरावृति करेंगे। कॉलम पर फिर से करने का कोई तरीका है?

+1

आप कॉलम (या पंक्तियाँ) से अधिक पुनरावृति करने के लिए क्यों चाहते हैं? आपका समग्र लक्ष्य क्या है? इसके लिए शायद अधिक सरल साधन मौजूद हैं। धन्यवाद – eat

+1

उदाहरण के लिए सरल रैखिक बीजगणित परिवर्तन उदाहरण –

+0

उदाहरण दिखाने के लिए देखभाल? इन परिवर्तनों को सीधे matrices के साथ क्यों नहीं किया जा सकता है? धन्यवाद – eat

उत्तर

39

कैसे

for i in a.transpose(): 

के बारे में या, छोटे:

for i in a.T: 

यह महंगा लग रही है लेकिन बहुत सस्ते वास्तव में हो सकता है (यह एक ही डेटा पर एक दृश्य दिखाए, लेकिन आकार और छलांग के साथ विशेषताएँ अनुमत)।

+4

या 'मैं एक में। टी' अगर आप वास्तव में कोड गोल्फ खेलना चाहते हैं। –

0

यह मानते हुए कि a एक अच्छी तरह का गठन मैट्रिक्स है, आप की तरह कुछ की कोशिश कर सकते:

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

यदि कोई बड़ा है, तो 'ज़िप' का उपयोग करके 'एटी' की तुलना में बहुत महंगा है। उदाहरण के लिए यदि 'ए' 100x100 है, तो ट्रांसपोज़ लेने से ज़िप 5000x धीमा है। 3x3 मामले के लिए यह अभी भी 10x धीमी है। पाइथन सूचियों जैसे अंडाकारों के इलाज के बजाए नमस्ते निर्मित इंस का उपयोग करना आम तौर पर एक अच्छा विचार है। – JoshAdel

संबंधित मुद्दे