numpy数组维度缺失

6 投票
1 回答
10616 浏览
提问于 2025-04-18 01:00

这段话在问下面这两个东西有什么区别(为什么第一个没有维度信息):

zeros((3,)).shape
Out[67]: (3,)

zeros((3,1)).shape
Out[68]: (3, 1)

1 个回答

10

数组的 shape 是它的维度组成的一个元组。一个一维的数组形状是 (n,),而一个二维的数组形状是 (n,m),三维的数组形状是 (n,m,k),依此类推。

当你把形状从 (3,) 改成 (3,1) 时,你就是在把一维数组变成二维数组。

你可以通过这种方式不断添加维度(你可以使用 .ndim 来查看数组的维度数量):

一维数组:

>>> a = np.zeros((2))
array([ 0.,  0.])
>>> a.shape
(2,)
>>> a.ndim
1

二维数组:

>>> b = np.zeros((2,2))
array([[ 0.,  0.],
       [ 0.,  0.]])
>>> b.shape
(2,2)
>>> b.ndim
2

三维数组:

>>> c = np.zeros((2,2,2))
array([[[ 0.,  0.],
        [ 0.,  0.]],

       [[ 0.,  0.],
        [ 0.,  0.]]])
>>> c.shape
(2,2,2)
>>> c.ndim
3

四维数组:

>>> d = np.zeros((2,2,2,2))
array([[[[ 0.,  0.],
         [ 0.,  0.]],

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


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

        [[ 0.,  0.],
         [ 0.,  0.]]]])
>>> d.shape
(2,2,2,2)
>>> d.ndim
4

撰写回答