numpy

2012-03-27 19 views
5

का उपयोग करके बहुआयामी सरणी में बूलियन सरणी के साथ अनुक्रमण करना मैं numpy का उपयोग करने के लिए नया हूं और एक चीज जिसे मैं वास्तव में समझ नहीं पा रहा हूं वह सरणी अनुक्रमणित है।numpy

>>> a = arange(12).reshape(3,4) 
>>> b1 = array([False,True,True])    # first dim selection 
>>> b2 = array([True,False,True,False])  # second dim selection 
>>> 
>>> a[b1,b2]         # a weird thing to do 
array([ 4, 10]) 

मैं पता नहीं क्यों यह है कि पिछले बात करता है:

tentative tutorial में इस उदाहरण है। क्या कोई मुझे यह समझा सकता है?

धन्यवाद!

उत्तर

4

आपका सरणी के होते हैं:

0 1 2 3 
4 5 6 7 
8 9 10 11 

एक अनुक्रमण की जिस तरह से यह पूर्णांकों की एक सूची का उपयोग करेंगे, यह निर्दिष्ट जो पंक्तियां/स्तंभ शामिल करने के लिए:

>>> i1 = [1,2] 
>>> i2 = [0,2] 
>>> a[i1,i2] 
array([ 4, 10]) 

अर्थ: पंक्ति 1 स्तंभ 0 , पंक्ति 2 कॉलम 2

जब आप बूलियन इंडेक्स का उपयोग कर रहे हैं, तो आप बता रहे हैं कि कौन सी पंक्तियां/कॉलम शामिल हैं और कौन सा नहीं:

>>> b1 = [False,True,True]  # 0:no, 1:yes, 2:yes  ==> [1,2] 
>>> b2 = [True,False,True,False] # 0:yes, 1:no, 2:yes, 3:no ==> [0,2] 

जैसा कि आप देख सकते हैं, यह i1 और i2 के ऊपर दिखाया गया है। इसलिए, a[b1,b2] का एक ही परिणाम होगा।

भी ध्यान रखें कि आपरेशन के ऊपर ही संभव है क्योंकि b1 और b2 दोनों True मूल्यों (हां, तो वे एक ही लंबाई के दो सरणियों जब पूर्णांक रूप में व्यक्त प्रतिनिधित्व करते हैं) के एक ही नंबर है।

+0

+1 यहां और पढ़ने के लिए एक लिंक है, http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html –

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