2016-06-16 13 views
5

के साथ numpy सरणी जोड़ना कोई यह बता सकता है कि यह कोड क्या कर रहा है?बूलियन

a = np.array([[1, 2], [3, 4]]) 
    a[..., [True, False]] 

[True, False] क्या कर रहा है?

+0

numpy 1.10 और 1.11 पर यह 'a [..., [1,0]]' प्लस फ्यूचरवार्निंग जैसा ही है। – kennytm

+0

और इसका क्या अर्थ है? – JRR

+0

[numpy boolean अनुक्रमण] (http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#boolean-array-indexing) – MaThMaX

उत्तर

1

अंडाकार संकेतन और बूलियन पूर्णांकों

From the numpy docs के रूप में:

अंडाकार की संख्या का विस्तार: x.ndim रूप में एक ही लंबाई की एक चयन टपल बनाने के लिए आवश्यक वस्तुओं। वहाँ केवल एक ही वर्तमान

True और Falseare just obfuscated 0 and 1 अंडाकार हो सकता है। दस्तावेज़ों से उदाहरण लेना:

x = np.array([[[1],[2],[3]], [[4],[5],[6]]]) 
x[...,0] 
# outputs: array([[1, 2, 3], 
#  [4, 5, 6]]) 
x[..., False] # same thing 

बूलियन मान सूचकांक निर्दिष्ट कर रहे हैं, जैसे संख्या 0 या 1 की तरह।


टिप्पणी में अपने प्रश्न के उत्तर में

यह पहली बार जादुई लगता है कि

a = np.array([[1, 2], [3, 4]]) 
a[..., [True, True]] # = [[2,2],[4,4]] 

लेकिन जब हम के रूप में

a[..., [1,1]] # = [[2,2],[4,4]] 

यह विचार करना यह कम प्रभावशाली लगता है ।

इसी तरह:

b = array([[1,2,3],[4,5,6]]) 
b[...,[2,2]] # = [[3,3],[5,5]] 

अंडाकार नियमों को लागू करने के बाद; सच्चे और झूठे हड़पने स्तंभ सूचकांक, बस की तरह 0, 1, या 17 परिसर अनुक्रमण के लिए


बूलियन सरणी होता

वहाँ कुछ सूक्ष्म अंतर (bool के ints से एक अलग प्रकार का है) । A lot of the hairy details can be found here। ऐसा लगता है कि आपके कोड में कोई रोल नहीं है, लेकिन यह पता लगाने में दिलचस्प है कि कैसे numpy अनुक्रमण काम करता है।

विशेष रूप से, इस लाइन संभव है कि आप के लिए देख रहे है: (जैसे कि अजगर bools की सूची के रूप में)

भविष्य बूलियन सरणी-पसंद में हमेशा बूलियन अनुक्रमित रूप में माना जाएगा

On this page, वे के बारे में बूलियन सरणियों है, जो एक अनुक्रमण उपकरण

के रूप में काफी जटिल हैं बात

सूचकांक के रूप में उपयोग किए जाने वाले बूलियन सरणी को इंडेक्स सरणी से पूरी तरह से पर अलग तरीके से माना जाता है।बूलियन सरणियों, के रूप में सरणी के प्रारंभिक आयाम अनुक्रमणिका में शामिल होने

पूर्णांक सूचकांक सरणियों के मामले में विपरीत एक सा

नीचे छोड़ा जा रहा है बूलियन मामले में, एक ही आकार का होना चाहिए नतीजा 1-डी सरणी है जिसमें बुलियन सरणी के सभी सच्चे तत्वों के अनुरूप अनुक्रमित सरणी में सभी तत्व शामिल हैं। अनुक्रमित सरणी में तत्व हमेशा पुनरावृत्त होते हैं और पंक्ति-प्रमुख (सी-शैली) क्रम में लौटाए जाते हैं। परिणाम वाई [np.nonzero (बी)] के समान भी है। इंडेक्स सरणी के साथ, जो वापस किया जाता है वह डेटा की एक प्रति है, न कि स्लाइस के साथ एक दृश्य के रूप में।

+0

यदि ऐसा है तो 'a [..., [सच है, सही]] ' ' सरणी ([[2, 2], [4, 4]]) – JRR

+0

@ जेआरआर क्षमा करें, उस उत्तर को जल्द ही सबमिट करने का मतलब नहीं है बहुत जल्द –

+0

@JRR आप पुष्टि कर सकते हैं कि एक [..., [सच, सच]] एक [..., [1, 1]] के रूप में उसी तरह मूल्यांकन करता है, सही? –

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