我有一个形状为(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行
答案 0 :(得分:2)
z = np.zeros((13, 10))
x = np.zeros((1, 10))
y = np.vstack((z, x))
y.shape
(14, 10)
选中vstack
答案 1 :(得分:0)
您可以使用np.pad
在感兴趣的轴上用零对数组进行零填充,直到其具有所需的形状。这是一个示例:
a = np.random.randint(0,10,(10,13))
print(a.shape)
# (10, 13)
padded = np.pad(a,(((20-a.shape[0]),0),(0,0)), mode = 'constant')
print(padded.shape)
# (20, 13)
print(padded)
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, 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],
[3, 6, 6, 2, 2, 7, 8, 6, 6, 8, 2, 8, 3],
[4, 5, 4, 8, 2, 0, 6, 6, 7, 6, 4, 9, 4],
[6, 5, 8, 1, 1, 0, 1, 4, 7, 0, 5, 4, 9],
[9, 0, 1, 3, 3, 9, 8, 2, 0, 4, 9, 4, 4],
[9, 6, 1, 9, 9, 9, 2, 6, 0, 9, 9, 4, 0],
[1, 2, 4, 0, 8, 3, 1, 7, 3, 9, 2, 0, 3],
[5, 5, 4, 0, 6, 7, 0, 1, 7, 0, 3, 2, 1],
[6, 8, 6, 3, 8, 9, 0, 5, 9, 9, 5, 3, 6],
[0, 3, 9, 7, 6, 1, 5, 4, 8, 7, 5, 2, 7],
[8, 3, 4, 0, 2, 7, 4, 3, 2, 7, 1, 3, 9]])
答案 2 :(得分:0)
尝试np.row_stack
:
a = np.ones((13,10))
b = np.zeros(10)
a_pad = np.row_stack((a,b))
a_pad
array([[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.zeros((7,10))
即可获得所需的20个
答案 3 :(得分:0)
首先,我们可以初始化一个填充有零的所需形状的矩阵,然后将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])
# 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.]])