2013-03-13 9 views
5

多次元零点の配列を作成する必要があります。多次元ゼロの作成Python

2(D = 2)または3の場合(D = 3)の寸法は、これは容易であり、私が使用したい:

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

又は

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

をどのようにするためのI高いDため、長さnの配列を作る?

答えて

10

タプル(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) 

EDIT:上記は間違っていませんが、それはちょっとしたものです。 @ mgilsonの答えが良いです。

+0

、私はこれはnp.zeros'がまだサポートされていない 'というあなたは何を取得する方法は本当にわかりません。これは 'np.zeros(sh)'よりどのように優れていますか? – mgilson

+0

@mgilson:そうです。余分な括弧の必要はありません。 'np.zeros(sh)'が動作します。 –

+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

これは実際にはタプルではなくリストを使用している以外の私の答えと違いはありません... – mgilson