2013-03-13 12 views
5

Potrzebuję utworzyć wielowymiarową tablicę zer.Utwórz wielowymiarowy Zeros Python

przez dwie (D = 2) lub trzy (D = 3) wymiar, to jest proste i że używać:

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

lub

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

Jak bo wyższego D , zrobić tablicę o długości n?

Odpowiedz

10

Możesz pomnożyć krotkę (n,) przez liczbę wymaganych wymiarów. np .:

>>> 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) 

EDYCJA: podczas gdy powyżej nie jest źle, to po prostu nadmierne. Odpowiedź @ mgilson jest lepsza.

+0

Na drugim myśli, że nie jestem pewien, jak to robi się nic, że 'np.zeros' już nie obsługuje. Jak to jest lepsze niż 'np.zeros (sh)'? – mgilson

+0

@mgilson: masz rację. Nie ma potrzeby stosowania dodatkowych nawiasów klamrowych: działa 'np.zeros (sh)'. –

+0

Dobrze, właśnie o to mi chodziło :) – 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

To naprawdę nie różni się od mojej odpowiedzi poza tym, że używasz listy zamiast krotki ... – mgilson

Powiązane problemy