2011-09-10 21 views
17

मेरे पास आकार (x, y) के साथ 2 डी सरणी है जिसे मैं आकार के साथ 3 डी सरणी में परिवर्तित करना चाहता हूं (x, y, 1)। क्या ऐसा करने के लिए एक अच्छा पायथनिक तरीका है?एक 2 डी numpy सरणी कैसे एक 3 डी सरणी बनाने के लिए?

उत्तर

31

अन्य उत्तर के अलावा, आप भी numpy.newaxis साथ टुकड़ा करने की क्रिया का उपयोग कर सकते हैं:

>>> from numpy import zeros, newaxis 
>>> a = zeros((6, 8)) 
>>> a.shape 
(6, 8) 
>>> b = a[:, :, newaxis] 
>>> b.shape 
(6, 8, 1) 

या यहां तक ​​कि इस (जो आयामों के एक मनमाना संख्या के साथ काम करेंगे):

>>> b = a[..., newaxis] 
>>> b.shape 
(6, 8, 1) 
+5

एक तरफ ध्यान दें, 'numpy.newaxis' सिर्फ' कोई नहीं 'है। 'newaxis' पठनीयता के लिए" बस "है। यह सिर्फ 'बी = ए [..., कोई नहीं] 'के बराबर है (ellipsis इसे एन-आयामी सरणी के लिए भी काम करने की अनुमति देता है, न केवल 2 डी सरणी।) –

+1

सच है। किसी कारण से मुझे यह धारणा थी कि 'नयाक्स' 'कोई नहीं 'था, केवल एक कार्यान्वयन विस्तार था (और इसलिए संभवतः भविष्य में परिवर्तन के अधीन), लेकिन ऐसा लगता है कि यह स्पष्ट रूप से प्रलेखित है। –

+0

मान लीजिए कि आप तीसरे धुरी को 1 से अलग कुछ करना चाहते हैं? जैसे 'b'shape = (6,8,3)' के साथ आप 'a' से be' b' को कैसे परिवर्तित करते हैं? – Gathide

6
numpy.reshape(array, array.shape + (1,)) 
+0

धन्यवाद, मैंने ए = एरेपेप (एशप + (1,)) – nobody

+2

का उपयोग किया है यदि आप जगह में 'ए' को संशोधित करने में प्रसन्न हैं, तो आप बस असाइन कर सकते हैं आकृति विशेषता: 'एशप = एशप + (1,)', या यहां तक ​​कि 'एशप + = 1,'। –

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