【问题标题】:Create Multidimensional Zeros Python创建多维零点 Python
【发布时间】:2013-03-01 20:30:09
【问题描述】:

我需要创建一个多维零数组。

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

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

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

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

【问题讨论】:

    标签: python arrays multidimensional-array numpy


    【解决方案1】:

    您可以将元组 (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 的答案更好。

      【讨论】:

      • 再想一想,我不确定这如何为您带来np.zeros 尚不支持的任何东西。这比np.zeros(sh) 好在哪里?
      • @mgilson:你是对的。也不需要额外的括号:np.zeros(sh) 有效。
      • 对,我就是这个意思:)
      【解决方案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.]]]])
      

      【讨论】:

      • 这真的和我的回答没有什么不同,除了你使用的是列表而不是元组......
      【解决方案4】:

      您可以使用方括号制作多维零数组

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

      【讨论】:

        猜你喜欢
        • 2012-11-07
        • 2017-05-02
        • 2016-05-18
        • 2014-06-26
        • 2017-06-12
        • 1970-01-01
        • 2013-04-20
        • 2017-02-19
        • 2011-08-19
        相关资源
        最近更新 更多