2009-11-13 7 views
10

से numpy में 3 डी सरणी का निर्माण करें। मैं जिस तरह से के बारे में उत्सुक निर्माण करने के लिए कर रहा हूँ:NumPy गणना के लिए डेटा तैयार करने के दौरान मौजूदा 2 डी सरणी

myarray.shape => (2,18,18) 

से:

hstack([[d1],[d2]]) 

लेकिन यह काम नहीं दिखता है:

d1.shape => (18,18) 
d2.shape => (18,18) 

मैं NumPy आदेश का उपयोग करने का प्रयास करें!

उत्तर

6

hstack और vstack कोई परिवर्तन सरणियों के आयामों की संख्या होती हैं: वे केवल उन्हें "कंधे से कंधा मिलाकर" डाल दिया। इस प्रकार, 2-आयामी सरणी संयोजन एक नई 2-आयामी सरणी बनाता है (एक 3 डी नहीं!)।

डैनियल ने जो भी सुझाव दिया है (सीधे numpy.array([d1, d2]) का उपयोग करें) कर सकते हैं।

आप वैकल्पिक रूप से उन्हें stacking, प्रत्येक सरणी को एक नया आयाम जोड़कर से पहले 3 डी सरणियों के लिए अपने सरणियों में बदल सकते हैं:

d3 = numpy.vstack([ d1[newaxis,...], d2[newaxis,...] ]) # shape = (2, 18, 18) 

वास्तव में, d1[newaxis,...].shape == (1, 18, 18), और आप दोनों 3 डी सरणियों सीधे ढेर और नए प्राप्त कर सकते हैं 3 डी सरणी (d3) जो आप चाहते थे।

+0

:) ईओएल धन्यवाद, अब मैं vstack, hstack – vernomcrp

+1

'np.vstack ([a [np.newaxis, ...], b [np.newaxis, ...]]) के बारे में और अधिक जानूंगा ! धन्यवाद। – thepunitsingh

21

बस कर d3 = array([d1,d2]) मेरे लिए काम करने लगता है:

>>> from numpy import array 
>>> # ... create d1 and d2 ... 
>>> d1.shape 
(18,18) 
>>> d2.shape 
(18,18) 
>>> d3 = array([d1, d2]) 
>>> d3.shape 
(2, 18, 18) 
+0

ओह उसका काम, धन्यवाद डैनियल :) – vernomcrp

+1

मेरे पास एक प्रश्न समान है। अगर मुझे आकार के साथ पहले ही डी 3 मिल गया है (2,18,18) और मैं 3-डी सरणी (3,18,18) बनाने के लिए एक और 2-डी सरणी डी 4 (18x18) डी 3 में जोड़ना चाहता हूं। मुझे क्या करना चाहिए? –

+1

आप बस मेरे जवाब में 'vstack (d3, d4 [np.newaxis, ...]) 'के रूप में। – EOL

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