Python 如何将向量添加到矩阵中

Python 如何将向量添加到矩阵中,python,numpy,Python,Numpy,我有一个形状矩阵(13,10),我想加上零向量,直到形状变成20行10列 a=([[1,2,3,.......,10], [1,2,3,.......,10], . . [13,14,.......,10]]). # this is the 13th row b=([0,0,0,....0]) # has length 10 我想在开头用“b”

我有一个形状矩阵(13,10),我想加上零向量,直到形状变成20行10列

    a=([[1,2,3,.......,10],
        [1,2,3,.......,10],
                    .
                    .   
        [13,14,.......,10]]). # this is the 13th row
   b=([0,0,0,....0])         # has length 10


我想在开头用“b”填充“a”,直到“a”有20行

z = np.zeros((13, 10))
x = np.zeros((1, 10))
y = np.vstack((z, x))
y.shape
(14, 10)

检查尝试
np.行堆栈

a=np.one((13,10))
b=np.零(10)
a_pad=np.行_堆栈((a,b))
便笺簿
数组([[1,1,1,1,1,1,1,1,1,1,1,1,1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]])

这样做直到你得到你想要的长度。可能是一个
while
循环或更简单的东西,只要叠加
b=np.zero((7,10))
就可以得到你想要的20个

首先我们可以初始化一个填充了所需形状的矩阵,然后将
a
复制到前13行。在任何情况下,我们都必须形成一个新的矩阵,因为我们需要为额外的空行分配更多的内存,因此无法处理现有的矩阵/向量

下面是一个示例演示:

# inputs
In [30]: a
Out[30]: 
array([[ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10],
       [ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10],
       [ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10],
       [ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10],
       [ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10],
       [11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
       [11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
       [11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
       [11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
       [11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
       [11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
       [11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
       [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]])

In [31]: b
Out[31]: array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])


您可以签出。Op希望输出有20行(用0填充其余的行),而不是14行
# initialize a zero array for the desired shape
In [32]: appended = np.zeros((20, b.shape[0]))

# copy `a` to first few rows
In [33]: appended[:a.shape[0], :] = a

# expected output
In [34]: appended
Out[34]: 
array([[ 1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.],
       [ 1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.],
       [ 1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.],
       [ 1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.],
       [ 1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.],
       [11., 12., 13., 14., 15., 16., 17., 18., 19., 20.],
       [11., 12., 13., 14., 15., 16., 17., 18., 19., 20.],
       [11., 12., 13., 14., 15., 16., 17., 18., 19., 20.],
       [11., 12., 13., 14., 15., 16., 17., 18., 19., 20.],
       [11., 12., 13., 14., 15., 16., 17., 18., 19., 20.],
       [11., 12., 13., 14., 15., 16., 17., 18., 19., 20.],
       [11., 12., 13., 14., 15., 16., 17., 18., 19., 20.],
       [11., 12., 13., 14., 15., 16., 17., 18., 19., 20.],
       [ 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.,  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.]])