2011-03-03 33 views
5

docs numpy का डिफ़ॉल्ट व्यवहार के अनुसार सूचकांक सरणियों कॉलम तक तो पंक्तियों से पहले है:numpy - 2 डी सरणी अनुक्रमण

a = numpy.arange(6).reshape(3,2) 

[[0 1] 
[2 3] 
[4 5]] 

print a[0][1] # is 1 

मैं सूचकांक करने के लिए सरणी ज्यामितीय उन्मुख-सम्मेलन a[x][y] उपयोग करते हुए, चाहते x- में के रूप में धुरी और वाई-अक्ष। सरणी के आकार को संशोधित किए बिना मैं इंडेक्सिंग ऑर्डर कैसे बदल सकता हूं ताकि a[0][1] 2 वापस आ जाए?

+0

मैं डॉक्स (लिंक देखें) से शब्दावली उधार:। "द मैट्रिक्स अंकन से संकेत मिलता है जो पंक्ति का चयन किया जा रहा है और दूसरी सूचकांक से संकेत मिलता है जो स्तंभ चयन किया जाता है पहले सूचकांक का उपयोग करता है यह विपरीत के लिए ज्यामितीय उन्मुख-सम्मेलन है छवियां जहां आम तौर पर लोग सोचते हैं कि पहली अनुक्रमणिका एक्स स्थिति (यानी कॉलम) का प्रतिनिधित्व करती है और दूसरा वाई स्थिति (यानी पंक्ति) का प्रतिनिधित्व करता है " – armandino

+0

कभी नहीं, कुछ और सोच रहा था। – NullUserException

+3

एक नोट के रूप में, जब बहु-आयामी सरणी अनुक्रमणित करते हैं तो आपको [i] [j] के बजाय नोटेशन का उपयोग करना चाहिए [i, j]। मुझे अपनी मशीन पर लगता है कि बाद में 2x धीमी है। – JoshAdel

उत्तर

8

आप a.T[0,1] लिख सकते हैं ताकि सरणी के हस्तांतरण के सूचकांक का उपयोग किया जा सके, जो कि 2 डी के आसपास दूसरी तरफ है।

+0

क्या यह हर बार जब मैं इस नोटेशन का उपयोग कर उपयोग करता हूं तो यह एक नया ट्रांसपोज़र सरणी बनाता है? – armandino

+2

'.T' केवल मूल सरणी का दृश्य बनाता है, इसलिए आप डेटा कॉपी नहीं कर रहे हैं। यह अपेक्षाकृत तेज़ होना चाहिए। – JoshAdel

+0

समझ गया। एक बार फिर से धन्यवाद! – armandino

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