2013-03-13 1 views
5

बनाएं मुझे ज़ीरो की एक बहुआयामी सरणी बनाने की आवश्यकता है।मल्टीडिमेंटल ज़ीरोस पायथन

दो (डी = 2) या तीन के लिए (डी = 3) आयाम, यह आसान है और मैं का उपयोग करेंगे:

a = numpy.zeros(shape=(n,n)) 

या

a = numpy.zeros(shape=(n,n,n)) 

कैसे उच्च विकास के लिए के लिए मैं , लंबाई एन की सरणी बनाओ?

उत्तर

10

आप अपने इच्छित आयामों की संख्या से एक tuple (n,) गुणा कर सकते हैं। उदा .:

>>> import numpy as np 
>>> N=2 
>>> np.zeros((N,)*1) 
array([ 0., 0.]) 
>>> np.zeros((N,)*2) 
array([[ 0., 0.], 
     [ 0., 0.]]) 
>>> np.zeros((N,)*3) 
array([[[ 0., 0.], 
     [ 0., 0.]], 

     [[ 0., 0.], 
     [ 0., 0.]]]) 
2
>>> sh = (10, 10, 10, 10) 
>>> z1 = zeros(10000).reshape(*sh) 
>>> z1.shape 
(10, 10, 10, 10) 

संपादित करें: जबकि ऊपर गलत नहीं है, यह केवल अत्यधिक है। @ mgilson का जवाब बेहतर है।

+0

दूसरी सोचा पर, मैं सच में यकीन है कि यह कैसे हो जाता है आप कुछ भी है कि 'np.zeros' पहले से ही समर्थन नहीं करता नहीं हूँ। यह 'np.zeros (sh) 'से बेहतर कैसे है? – mgilson

+0

@ मिगिलसन: आप सही हैं। अतिरिक्त ब्रैकेट के लिए कोई ज़रूरत नहीं है, साथ ही: 'np.zeros (sh)' works। –

+0

ठीक है, मेरा मतलब यही था :) – mgilson

2
In [4]: import numpy 

In [5]: n = 2 

In [6]: d = 4 

In [7]: a = numpy.zeros(shape=[n]*d) 

In [8]: a 
Out[8]: 
array([[[[ 0., 0.], 
     [ 0., 0.]], 

     [[ 0., 0.], 
     [ 0., 0.]]], 


     [[[ 0., 0.], 
     [ 0., 0.]], 

     [[ 0., 0.], 
     [ 0., 0.]]]]) 
+0

यह वास्तव में मेरे उत्तर से अलग नहीं है, आप एक tuple की बजाय सूची का उपयोग कर रहे हैं ... – mgilson