在Python中创建多维零

在Python中创建多维零,python,arrays,multidimensional-array,numpy,Python,Arrays,Multidimensional Array,Numpy,我需要做一个多维的零数组 对于两个(D=2)或三个(D=3)维度,这很简单,我会使用: a = numpy.zeros(shape=(n,n)) 或 对于高D的I,如何制作长度为n的数组 >>> sh = (10, 10, 10, 10) >>> z1 = zeros(10000).reshape(*sh) >>> z1.shape (10, 10, 10, 10) 编辑:虽然上面没有错,但这是过度的@米吉尔森的答案更好 您可以将元组(

我需要做一个多维的零数组

对于两个(D=2)或三个(D=3)维度,这很简单,我会使用:

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

对于高D的I,如何制作长度为n的数组

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

编辑:虽然上面没有错,但这是过度的@米吉尔森的答案更好

您可以将元组
(n,)
乘以所需的维数。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.]]])

可以使用方括号创建多维零数组

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

再想一想,我真的不确定这如何让你得到任何
np.zeros
还不支持的东西。这比np.zero(sh)好多少?@mgilson:你说得对。也不需要额外的括号:
np.zeros(sh)
有效。对,这就是我的意思:)这和我的答案没有什么不同,只是你使用的是列表而不是元组。。。
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.]]]])
array_4D = np.zeros([3,3,3,3])