11

I need to make a multidimensional array of zeros.

For two (D=2) or three (D=3) dimensions, this is easy and I'd use:

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

or

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

How for I for higher D, make the array of length n?

4 Answers 4

18

You can multiply a tuple (n,) by the number of dimensions you want. e.g.:

>>> 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.]]])
Sign up to request clarification or add additional context in comments.

Comments

4
>>> sh = (10, 10, 10, 10)
>>> z1 = zeros(10000).reshape(*sh)
>>> z1.shape
(10, 10, 10, 10)

While above is not wrong, it's just excessive.

3 Comments

On second thought, I'm not really sure how this gets you anything that np.zeros doesn't already support. How is this better than np.zeros(sh)?
@mgilson: you're right. No need for extra brackets, as well: np.zeros(sh) works.
Right, that's what I meant :)
3
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.]]]])

1 Comment

This really isn't any different than my answer other than you're using a list rather than a tuple ...
0

you can make multidimensional array of zeros by using square brackets

array_4D = np.zeros([3,3,3,3])

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.