Python 向现有np数组添加维度

Python 向现有np数组添加维度,python,numpy,linear-algebra,Python,Numpy,Linear Algebra,我试图通过经典线性代数,在numpy数组的维数和矩阵的维数之间建立一个干净的联系。假设如下: In [1] import numpy as np In [2] rand = np.random.RandomState(42) In [3] a = rand.rand(3,2) In [4] a Out[4]: array([[0.61185289, 0.13949386], [0.29214465, 0.36636184], [0.45606998, 0.78

我试图通过经典线性代数,在numpy数组的维数和矩阵的维数之间建立一个干净的联系。假设如下:

In [1]  import numpy as np
In [2]  rand = np.random.RandomState(42)
In [3]  a = rand.rand(3,2)
In [4]  a
Out[4]:
array([[0.61185289, 0.13949386],
       [0.29214465, 0.36636184],
       [0.45606998, 0.78517596]])
In [5]: a[np.newaxis,:,:]
Out[5]:
array([[[0.61185289, 0.13949386],
        [0.29214465, 0.36636184],
        [0.45606998, 0.78517596]]])
In [6]: a[:,np.newaxis,:]
Out[6]:
array([[[0.61185289, 0.13949386]],

       [[0.29214465, 0.36636184]],

       [[0.45606998, 0.78517596]]])

In [7]: a[:,:,np.newaxis]
Out[7]:
array([[[0.61185289],
        [0.13949386]],

       [[0.29214465],
        [0.36636184]],

       [[0.45606998],
        [0.78517596]]])
我的问题如下:

  • a
    的尺寸是3 X 2是正确的吗?换句话说,一个3x2矩阵
  • a[np.newaxis,:,:]
    的尺寸是1 X 3 X 2是正确的吗?换句话说,一个包含3x2矩阵的矩阵
  • 如果说
    a[:,np.newaxis,:]
    的尺寸是3x1x2,对吗?换句话说,一个包含3个1 X 2矩阵的矩阵
  • a[:,:,np.newaxis]
    的尺寸是3x2x1是正确的吗?换句话说,一个矩阵包含3个矩阵,每个矩阵包含2个1 X 1矩阵
  • 三个2x1矩阵,每个矩阵包含一个大小为1的向量
  • 只需通过以下方式了解:

    将numpy导入为np
    rand=np.random.RandomState(42)
    # 1.
    a=兰特(3,2)
    打印(a.shape,a,sep='\n',end='\n\n')
    # 2.
    b=a[np.newaxis,:,:]
    打印(b.shape,b,sep='\n',end='\n\n')
    # 3.
    c=a[:,np.newaxis,:]
    打印(c.shape,c,sep='\n',end='\n\n')
    #4.a
    d=a[:,:,np.newaxis]
    打印(d.shape,d,sep='\n',end='\n\n')
    #4.b
    打印(d[0]。形状,d[0],sep='\n',end='\n\n')
    打印(d[0,0]。形状,d[0,0])
    
    输出:

    (3,2)
    [[0.37454012 0.95071431]
    [0.73199394 0.59865848]
    [0.15601864 0.15599452]]
    (1, 3, 2)
    [[[0.37454012 0.95071431]
    [0.73199394 0.59865848]
    [0.15601864 0.15599452]]]
    (3, 1, 2)
    [[[0.37454012 0.95071431]]
    [[0.73199394 0.59865848]]
    [[0.15601864 0.15599452]]]
    (3, 2, 1)
    [[[0.37454012]
    [0.95071431]]
    [[0.73199394]
    [0.59865848]]
    [[0.15601864]
    [0.15599452]]]
    (2, 1)
    [[0.37454012]
    [0.95071431]]
    (1,) [0.37454012]
    
    作为临时桥梁,这些描述可能会有所帮助,但从长远来看,您应该使用numpy自己的术语。这些都是具有不同维度的
    数组
    numpy
    可以有0、1、2或更多维度
    a.shape
    是具有这些维度的元组,因此可以是
    ()
    (3,)
    (2,3,4)
    。在可能的情况下,
    numpy
    试图将每个维度都视为“同等重要”。