2016-11-29 8 views
10

मैंने यह जानने के लिए खुद को लिया है कि कैसे NumPy मेरी जिज्ञासा के लिए काम करता है।NumPy Sum (अक्ष के साथ) कैसे काम करता है?

ऐसा लगता है कि कोड में अनुवाद करने के लिए सबसे सरल कार्य सबसे कठिन है (मैं कोड द्वारा समझता हूं)। प्रत्येक मामले के लिए प्रत्येक अक्ष को हार्ड कोड करना आसान है, लेकिन मैं एक गतिशील एल्गोरिदम खोजना चाहता हूं जो एन-आयाम वाले किसी अक्ष में योग कर सकता है। आधिकारिक वेबसाइट पर प्रलेखन सहायक नहीं है (यह न केवल परिणाम को परिणाम दिखाता है) और पाइथन/सी कोड के माध्यम से नेविगेट करना मुश्किल है।

नोट: मैं था यह पता लगाने कि जब एक सरणी अभिव्यक्त किया जाता है, अक्ष निर्दिष्ट के आकार के साथ एक सरणी "निकाला गया" है, यानी बीमा राशि (4, 3, 2) अक्ष 1 के साथ की एक जवाब पैदावार के आकार के साथ एक सरणी (4, 2)

+1

आपको परेशान करने के बारे में और अधिक विशिष्ट होने की आवश्यकता है। 'अनुवाद करने के लिए कोड' से आपका क्या मतलब है? जैसा कि मैं सीमा में हूं ...: 'अभिव्यक्ति की तरह? – hpaulj

+0

@ hpaulj हां मुझे उल्लेख करना चाहिए कि – Jarann

+1

आपको एक उदाहरण सरणी बनाने की आवश्यकता है, और कई अलग-अलग पुनरावृत्तियों का प्रदर्शन करना होगा। सोच की अपनी रेखा दिखाओ। फिर हम सुधार का सुझाव दे सकते हैं। Psuedo कोड भूल जाओ। – hpaulj

उत्तर

48

सेटअप

numpy सरणी पर विचार a

a = np.arange(30).reshape(2, 3, 5) 
print(a) 

[[[ 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 27 28 29]]] 

कहाँ मंद कर रहे हैं ensions?

आयामों और पदों निम्नलिखित

  p p p p p 
      o o o o o 
      s s s s s 

    dim 2 0 1 2 3 4 

      | | | | | 
    dim 0  ↓ ↓ ↓ ↓ ↓ 
    ----> [[[ 0 1 2 3 4] <---- dim 1, pos 0 
    pos 0 [ 5 6 7 8 9] <---- dim 1, pos 1 
      [10 11 12 13 14]] <---- dim 1, pos 2 
    dim 0 
    ----> [[15 16 17 18 19] <---- dim 1, pos 0 
    pos 1 [20 21 22 23 24] <---- dim 1, pos 1 
      [25 26 27 28 29]]] <---- dim 1, pos 2 
      ↑ ↑ ↑ ↑ ↑ 
      | | | | | 

    dim 2 p p p p p 
      o o o o o 
      s s s s s 

      0 1 2 3 4 

आयाम उदाहरण से हाइलाइट किया जाता है:

यह कुछ उदाहरण के साथ और अधिक स्पष्ट हो जाता है

a[0, :, :] # dim 0, pos 0 

[[ 0 1 2 3 4] 
[ 5 6 7 8 9] 
[10 11 12 13 14]] 

a[:, 1, :] # dim 1, pos 1 

[[ 5 6 7 8 9] 
[20 21 22 23 24]] 

a[:, :, 3] # dim 2, pos 3 

[[ 3 8 13] 
[18 23 28]] 

sum की व्याख्या sum और axis
a.sum(0) साथ dim 0

a.sum(0) 

[[15 17 19 21 23] 
[25 27 29 31 33] 
[35 37 39 41 43]] 
सभी स्लाइस का योग है

a[0, :, :] + \ 
a[1, :, :] 

[[15 17 19 21 23] 
[25 27 29 31 33] 
[35 37 39 41 43]] 

a.sum(1) रूप में एक ही साथ dim 1

a.sum(1) 

[[15 18 21 24 27] 
[60 63 66 69 72]] 

एक ही रूप में

a[:, 0, :] + \ 
a[:, 1, :] + \ 
a[:, 2, :] 

[[15 18 21 24 27] 
[60 63 66 69 72]] 

सभी स्लाइस का योग हैसाथ dim 2

a.sum(2) 

[[ 10 35 60] 
[ 85 110 135]] 

ही सभी स्लाइस की राशि के रूप में

a[:, :, 0] + \ 
a[:, :, 1] + \ 
a[:, :, 2] + \ 
a[:, :, 3] + \ 
a[:, :, 4] 

[[ 10 35 60] 
[ 85 110 135]] 

डिफ़ॉल्ट अक्ष -1
यह सब कुल्हाड़ियों का मतलब है। या सभी संख्याओं की राशि।

a.sum() 

435 
+1

था धन्यवाद!स्लाइस इंडेक्सिंग और विजुअल स्ट्रक्चर एक टन में मदद करता है और अब मैं अंत में अपने सिर में प्रक्रिया को मैप कर सकता हूं। – Jarann

+1

@piRSquared, क्या मैं पूछ सकता हूं कि आप 'संपादक कहां हैं' – inaMinute

+1

@inaMinute अनुभाग में चित्र प्राप्त करने के लिए आप किस संपादक का उपयोग करते हैं, मैंने जुपीटर नोटबुक – piRSquared

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