2013-06-13 2 views
21

Numpy's tutorial से, अक्ष को पूर्णांक के साथ अनुक्रमित किया जा सकता है, जैसे 0 कॉलम के लिए है, 1 पंक्ति के लिए है, लेकिन मुझे समझ में नहीं आता कि उन्हें इस तरह से अनुक्रमित क्यों किया जाता है? और बहुआयामी सरणी के साथ मुकाबला करते समय मैं प्रत्येक धुरी के सूचकांक को कैसे समझूं?अक्ष की सरणी में अक्ष को अनुक्रमित कैसे किया जाता है?

+5

'0' पंक्तियों को संदर्भित करना चाहिए और' 1' को स्तंभों का संदर्भ लेना चाहिए। मुझे संदेह है कि आप उदासीन सोच रहे हैं '.sum (अक्ष = 0) 'जो * पंक्तियों के साथ * पंक्तियों का उत्पादन करता है (कॉलम योग का उत्पादन)। – nneonneo

+0

@nneonneo, हाँ, मेरा मतलब है, तो मैं प्रत्येक अक्ष की अनुक्रमणिका कैसे जानूं? – Alcott

उत्तर

48

परिभाषा के अनुसार, आयाम की अक्ष संख्या सरणी के shape के भीतर उस आयाम की अनुक्रमणिका है। यह इंडेक्सिंग के दौरान उस आयाम तक पहुंचने के लिए भी उपयोग की जाने वाली स्थिति है।

उदाहरण के लिए, यदि 2 डी सर a आकार (5,6) है, तो आप a[0,0] तक a[4,5] तक पहुंच सकते हैं। एक्सिस 0 इस प्रकार पहला आयाम ("पंक्तियां") है, और धुरी 1 दूसरा आयाम ("कॉलम") है। उच्च आयामों में, जहां "पंक्ति" और "कॉलम" वास्तव में समझ में आते हैं, आकार और सूचकांक के संदर्भ में अक्षों के बारे में सोचने का प्रयास करें।

यदि आप .sum(axis=n) करते हैं, उदाहरण के लिए, तो आयाम n को ध्वस्त और हटा दिया गया है, नए मैट्रिक्स में सभी मान संबंधित ध्वस्त मूल्यों के बराबर के बराबर हैं। उदाहरण के लिए, यदि b आकार (5,6,7,8) है, और आप c = b.sum(axis=2) करते हैं, तो अक्ष 2 (आकार 7 के साथ आयाम) ध्वस्त हो गया है, और परिणाम (5,6,8) आकार है। इसके अलावा, c[x,y,z] सभी तत्वों के योग के बराबर है c[x,y,:,z]

+0

आपको बहुत बहुत धन्यवाद। – Alcott

+0

इस उत्तर के लिए धन्यवाद। यह मेरे लिए चीजों को मंजूरी दे दी। –

+1

यह https://youtu.be/gtejJ3RCddE?t=2h38m15s – bicepjai

5

सामान्य में, अक्ष = 0, इतने पर

उदाहरण के लिए 2 आयाम और 3 आयाम और के प्रत्येक मान के साथ अलग-अलग, 2-आयामी सरणी दो इसी कुल्हाड़ियों है पहले आयाम के साथ सभी कक्षों का अर्थ है: पहला लंबवत चल रही नीचे की ओर भर पंक्तियों (अक्ष 0), और क्षैतिज स्तंभ (अक्ष 1)

3 डी के लिए भर में दूसरा चल रहा है, यह जटिल है, इसलिए, छोरों

>>> x = np.array([[[ 0, 1, 2], 
    [ 3, 4, 5], 
    [ 6, 7, 8]], 
    [[ 9, 10, 11], 
    [12, 13, 14], 
    [15, 16, 17]], 
    [[18, 19, 20], 
    [21, 22, 23], 
    [24, 25, 26]]]) 

>>> x.shape #(3, 3, 3) 

#axis = 0 
>>> for j in range(0, x.shape[1]): 
     for k in range(0, x.shape[2]): 
     print("element = ", (j,k), " ", [ x[i,j,k] for i in range(0, x.shape[0]) ]) 
... 
element = (0, 0) [0, 9, 18]    #sum is 27 
element = (0, 1) [1, 10, 19]   #sum is 30 
element = (0, 2) [2, 11, 20] 
element = (1, 0) [3, 12, 21] 
element = (1, 1) [4, 13, 22] 
element = (1, 2) [5, 14, 23] 
element = (2, 0) [6, 15, 24] 
element = (2, 1) [7, 16, 25] 
element = (2, 2) [8, 17, 26] 

>>> x.sum(axis=0)    
array([[27, 30, 33], 
     [36, 39, 42], 
     [45, 48, 51]]) 

#axis = 1  
for i in range(0, x.shape[0]): 
    for k in range(0, x.shape[2]): 
     print("element = ", (i,k), " ", [ x[i,j,k] for j in range(0, x.shape[1]) ]) 

element = (0, 0) [0, 3, 6]  #sum is 9 
element = (0, 1) [1, 4, 7] 
element = (0, 2) [2, 5, 8] 
element = (1, 0) [9, 12, 15] 
element = (1, 1) [10, 13, 16] 
element = (1, 2) [11, 14, 17] 
element = (2, 0) [18, 21, 24] 
element = (2, 1) [19, 22, 25] 
element = (2, 2) [20, 23, 26] 

# for sum, axis is the first keyword, so we may omit it, 

>>> x.sum(0), x.sum(1), x.sum(2) 
(array([[27, 30, 33], 
     [36, 39, 42], 
     [45, 48, 51]]), 
array([[ 9, 12, 15], 
     [36, 39, 42], 
     [63, 66, 69]]), 
array([[ 3, 12, 21], 
     [30, 39, 48], 
     [57, 66, 75]])) 
2

के लिए उपयोग कई हो जाने पर आपको इस तरह से अक्ष समझ सकते हैं :

>>> a = np.array([[[1,2,3],[2,2,3]],[[2,4,5],[1,3,6]],[[1,2,4],[2,3,4]],[[1,2,4],[1,2,6]]]) 
array([[[1, 2, 3], 
    [2, 2, 3]], 

    [[2, 4, 5], 
    [1, 3, 6]], 

    [[1, 2, 4], 
    [2, 3, 4]], 

    [[1, 2, 4], 
    [1, 2, 6]]]) 
>>> a.shape 
(4,2,3) 

मैंने विभिन्न मान (4,2,3) के साथ एक आकार की एक सरणी बनाई ताकि आप संरचना को स्पष्ट रूप से बता सकें। अलग अक्ष का अर्थ अलग 'परत' है।

वह है, axis = 0 आकार (4,2,3) आकार का पहला आयाम सूचकांक। यह पहले [] में सरणी को संदर्भित करता है। इसमें 4 तत्व हैं, तो इसके आकार 4:

array[[1, 2, 3], 
     [2, 2, 3]], 

    array[[2, 4, 5], 
     [1, 3, 6]], 

    array[[1, 2, 4], 
     [2, 3, 4]], 

    array[[1, 2, 4], 
     [1, 2, 6]] 

axis = 1 सूचकांक आकार (4,3,2) में दूसरे आयाम। परत के प्रत्येक सरणी में 2 तत्व हैं: axis = 0, e.c।

array[[1, 2, 3], 
     [2, 2, 3]] 

की सरणी में। दो तत्व हैं:

array[1, 2, 3] 

array[2, 2, 3] 

और तीसरा आकार मूल्य का मतलब है परत से प्रत्येक सरणी तत्व में 3 तत्वों देखते हैं: axis = 2। ई.सी. array[1, 2, 3] में 3 तत्व हैं। यह स्पष्ट है।

और साथ ही, आप शुरुआत में या अंत में [] की संख्या से अक्ष/आयाम बता सकते हैं।इस मामले में, संख्या 3 ([[[) है, इसलिए आप axisaxis = 0, axis = 1 और axis = 2 से चुन सकते हैं।