2015-09-18 5 views
5

में स्लाइसिंग के बाद परिणाम सरणी के आकार को निर्धारित करना मुझे समझ में मुश्किल है कि परिणामस्वरूप सरणी का आकार कैसे खराब में टुकड़ा करने के बाद निर्धारित किया जाता है। उदाहरण के लिए मैं निम्नलिखित सरल कोड का उपयोग कर रहा:नम्पी

import numpy as np 


array=np.arange(27).reshape(3,3,3) 

slice1 = array[:,1:2,1] 
slice2= array[:,1,1] 

print "Content in slice1 is ", slice1 
print "Shape of slice1 is ", slice1.shape 
print "Content in slice2 is ",slice2 
print "Shape of Slice2 is", slice2.shape 

इस बात का आउटपुट है:

Content in slice1 is 
[[ 4] 
    [13] 
    [22]] 
Shape of slice1 is (3, 1) 
Content in slice2 is [ 4 13 22] 
Shape of Slice2 is (3,) 

इन दोनों मामलों में, सामग्री एक ही (के रूप में यह होना चाहिए) है। लेकिन वे आकार में भिन्न हैं। तो, परिणामस्वरूप आकार numpy द्वारा निर्धारित कैसे किया जाता है?

+1

http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html – Kasramvd

+2

मूल रूप से - तो तुम एक सरणी वापस मिल पूर्णांक प्रत्येक बार 1 से आयामों की संख्या को कम कर देता है। –

+0

एक 'आकार' विशेषता है। इसे और अन्य विशेषताओं को देखने के लिए 'x .__ array_interface__' देखें। – hpaulj

उत्तर

5

यह मूल रूप से इस करने पर निर्भर करता -

In [118]: a = np.array([1,2,3,4,5]) 

In [119]: a[1:2] 
Out[119]: array([2]) 

In [120]: a[1] 
Out[120]: 2 

जब आप a[1:2] करते हैं, आप 1 तत्व के साथ एक सरणी के लिए पूछ रहे हैं।

जब आप a[1] करते हैं तो आप उस सूचकांक में तत्व के लिए पूछ रहे हैं।


इसी तरह की चीज आपके मामले में होती है।

जब आप करते हैं - array[:,1:2,1] - इसका मतलब है कि पहले आयाम से सभी संभावित इंडेक्स, दूसरे आयाम से इंडेक्स की उप-सूची (हालांकि उप-सूची में केवल एक तत्व होता है), और तीसरा आयाम से पहला सूचकांक। तो अगर आप सरणियों की एक सरणी वापस मिल -

[[ 4] 
    [13] 
    [22]] 

जब आप ऐसा करेंगे - array[:,1,1] - यह पहला आयाम, दूसरे आयाम से 1 सूचकांक, और तीसरा आयाम से 1 इंडेक्स से सभी संभव अनुक्रमित का मतलब है। टुकड़ा करने की क्रिया आयाम की संख्या को कम नहीं करता, लेकिन अनुक्रमण एक साथ:

[4 13 22] 
संबंधित मुद्दे