调整Numpy矩阵的大小

调整Numpy矩阵的大小,numpy,matrix,resize,Numpy,Matrix,Resize,假设我有以下numpy矩阵: array([[ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.]]) 我想把这个矩阵的大小调整为4x4,并用0填充缺失的值 我想要的是: array([[ 1., 1., 1., 0.], [ 1., 1., 1., 0.], [ 1., 1., 1., 0.], [ 0., 0., 0., 0.]) array([[ 1

假设我有以下numpy矩阵:

array([[ 1.,  1.,  1.],
       [ 1.,  1.,  1.],
       [ 1.,  1.,  1.]])
我想把这个矩阵的大小调整为4x4,并用0填充缺失的值

我想要的是:

array([[ 1.,  1.,  1.,  0.],
       [ 1.,  1.,  1.,  0.],
       [ 1.,  1.,  1.,  0.],
       [ 0.,  0.,  0.,  0.])
array([[ 1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.],
       [ 1.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.]])
可以说,我的原始矩阵是“维护”的。如果我用.resize((4,4))调用numpy的resize函数,它实际上将执行以下操作:

array([[ 1.,  1.,  1.,  0.],
       [ 1.,  1.,  1.,  0.],
       [ 1.,  1.,  1.,  0.],
       [ 0.,  0.,  0.,  0.])
array([[ 1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.],
       [ 1.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.]])
这似乎是从一些行中提取项目并将其添加到其他行中以适应新形状,然后用零填充其他所有内容,这不是我想要的

在添加这些空行和空列时,如何将所有数据保留在“正确”的行位置?

使用例程:



可选的
常量值
模式中使用的参数
常量
表示为每个轴设置填充值的值;默认为
0

分配和填充方法:

In [210]: arr = np.ones((3,3))
In [211]: res = np.zeros((4,4))
In [212]: res[:3,:3] = arr
In [213]: res
Out[213]: 
array([[1., 1., 1., 0.],
       [1., 1., 1., 0.],
       [1., 1., 1., 0.],
       [0., 0., 0., 0.]])

np.pad
在填充更复杂时具有更大的功率,但对于这种简单的东西,它的速度较慢。如果感兴趣,请查看其代码。无论如何,了解和理解这个简单的方法是一个好主意。

制作一个大小合适的
数组,并将数组复制到其中。如何用1或0以外的特定值填充它将是我的后续工作,很好地了解。在这种情况下,我需要用常量值填充它,以便标记这些新条目,因此,对于我的情况,罗曼的答案更合适,但知道所涉及的时间复杂性很好,我也会记住这一点。谢谢