用numpy中的零填充数组

时间:2014-01-30 12:09:04

标签: python arrays numpy

h = numpy.zeros((2,2,2)) 

最后2个是什么?它是创建一个多维数组还是什么?

输出:

array([[[ 0.,  0.],
    [ 0.,  0.]],
   [[ 0.,  0.],
    [ 0.,  0.]]])

如果它正在创建份数,那么当我执行以下操作时会发生什么?

h = numpy.zeros((2,2,1))

输出:

array([[[ 0.],
    [ 0.]],
   [[ 0.],
    [ 0.]]])

我知道它被零填充,前两个值指定行和列,第三个是什么?先感谢您。我尝试了谷歌,但我不能说出我的问题。

4 个答案:

答案 0 :(得分:9)

通过给出三个参数来创建一个三维数组:

numpy.array((2,2,2))会产生一个大小为2x2x2的数组:

  0---0
 /   /|
0---0 0
|   |/
0---0

numpy.array((2,2,1))会生成一个大小为2x2x1的数组:

0---0
|   |
0---0

numpy.array((2,1,2))会生成一个大小为2x2x1的数组:

  0---0
 /   /
0---0

numpy.array((1,2,2))会生成一个大小为2x2x1的数组:

  0
 /|
0 0
|/
0

在这些表示中,矩阵“可能看起来像numpy.array((2,2))”(2x2数组)但是底层结构仍然是三维的。

答案 1 :(得分:3)

阅读(4,3,2):有4层楼的建筑物,每层有3行2列房间。因此它是一个三维阵列。

In [4]: np.zeros((4, 3, 2))                                                                      
Out[4]: 
array([[[ 0.,  0.],                                                                              
        [ 0.,  0.],                                                                              
        [ 0.,  0.]],                                                                             

       [[ 0.,  0.],                                                                              
        [ 0.,  0.],                                                                              
        [ 0.,  0.]],                                                                             

       [[ 0.,  0.],                                                                              
        [ 0.,  0.],                                                                              
        [ 0.,  0.]],                                                                             

       [[ 0.,  0.],                                                                              
        [ 0.,  0.],                                                                              
        [ 0.,  0.]]])      

答案 2 :(得分:1)

参数指定shape of the array

In [72]: import numpy as np

In [73]: h = np.zeros((2,2,2))

In [74]: h.shape
Out[74]: (2, 2, 2)

In [75]: h = np.zeros((2,2,1))

In [76]: h.shape
Out[76]: (2, 2, 1)

如果数组的形状是(a,b,c),那么它在NumPy中就是3"轴" (或通用英语,3"维度")。轴0的长度为a,轴1的长度为b,轴2的长度为c


当您定义h = np.zeros((2,2,1))时,请注意结果有3个括号级别:

In [77]: h
Out[77]: 
array([[[ 0.],
        [ 0.]],

       [[ 0.],
        [ 0.]]])

最外面的括号包含2个项目,中间括号也包含2个项目。最里面的括号只包含一个项目。因此,形状为(2,2,1)。

答案 3 :(得分:0)

最后一位数字总是表示元素的数量。所有其他都是数组或列表 因此, (3, 4, 3) 表示我需要一个包含 3 个数组的列表,其中 3 个数组中的每一个包含 4 个数组,这 4 个数组中的每一个都包含 3 个 元素

{ [[0,0,0,], [0,0,0], [0,0,0], [0,0,0]],
[[0,0,0], [0,0,0], [0,0,0], [0,0,0]],
[[0,0,0], [0,0,0], [0,0,0], [0,0,0]] }

2, 2, 1 表示 2 个数组的列表,每个数组包含 2 个数组,每个数组有 1 个 元素

{ [[0], [0}],
[[0], [0]] }