NumPy

2013-01-23 21 views
25

में एक सरणी नयी आकृति प्रदान करना निम्न प्रपत्र (बस एक उदाहरण) की एक सरणी पर विचार करें:NumPy

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

यह आकार है [9,2]। अब मैं सरणी को बदलने के लिए चाहते हैं, ताकि प्रत्येक स्तंभ एक आकार [3,3], इस तरह हो जाता है:

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

सबसे स्पष्ट है (और निश्चित रूप से "गैर pythonic") समाधान शून्यों की एक सरणी आरंभ करने के लिए है उचित आयाम के साथ और दो फॉर-लूप चलाएं जहां यह डेटा से भरा जाएगा। मैं एक समाधान भाषा-अनुरूप है कि में दिलचस्पी रखता हूँ ...

उत्तर

40
a = np.arange(18).reshape(9,2) 
b = a.reshape(3,3,2).swapaxes(0,2) 

# a: 
array([[ 0, 1], 
     [ 2, 3], 
     [ 4, 5], 
     [ 6, 7], 
     [ 8, 9], 
     [10, 11], 
     [12, 13], 
     [14, 15], 
     [16, 17]]) 


# b: 
array([[[ 0, 6, 12], 
     [ 2, 8, 14], 
     [ 4, 10, 16]], 

     [[ 1, 7, 13], 
     [ 3, 9, 15], 
     [ 5, 11, 17]]]) 
+15

ध्यान दें कि 'b' अब सन्निहित नहीं है, जिसका अर्थ है कि यह जगह में नया रूप नहीं किया जा सकता:' b.reshape (9, 2) ' एक प्रतिलिपि देता है, एक ही डेटा के दृश्य नहीं, और 'b.shape = (9, 2) 'उठाएगा और त्रुटि होगी। – Jaime

+3

@ जैम द्वारा बहुत ही महत्वपूर्ण टिप्पणी, आकार के बिंदु के रूप में एक क्लोन के बिना आशावादी आकार बदलने की अनुमति है। बड़े डेटासेट के साथ बड़ा सौदा – deepelement

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

  • कोई संबंधित समस्या नहीं^_^