Skip to main content
 首页 » 编程设计

Python:numpy.matrix.resize 移动元素

2025年05月04日26Leo_wl

我有一个 numpy 矩阵:

[[ 0.   0.2  0. ] 
 [ 0.   0.   0.2] 
 [ 0.   0.   0. ]] 

当我调整它的大小时 matrix.resize(4, 4),为了有一个额外的行和列,它变成了:

[[ 0.   0.2  0.   0. ] 
 [ 0.   0.2  0.   0. ] 
 [ 0.   0.   0.   0. ] 
 [ 0.   0.   0.   0. ]] 

第二行的元素向左移动一位。似乎所有元素都被移动了,并且 0. 被添加到底部。

我希望矩阵变成:

[[ 0.   0.2  0.   0. ] 
 [ 0.   0.   0.2  0. ] 
 [ 0.   0.   0.   0. ] 
 [ 0.   0.   0.   0. ]] 

我该如何解决这个问题?

请注意,我正在对许多不同的矩阵执行此操作,其中包含许多不同的值。因此,我正在寻找适用于任何大小矩阵的简单解决方案,但添加的列和行应包含全 0。

谢谢!

请您参考如下方法:

你可以使用 np.pad填充数组:

import numpy as np 
 
arr = np.array([[ 0.,   0.2,  0. ], 
                [ 0.,   0.,   0.2], 
                [ 0.,   0.,   0. ]]) 
np.pad(arr, pad_width=([0,1], [0,1]), mode='constant') 

产量

array([[ 0. ,  0.2,  0. ,  0. ], 
       [ 0. ,  0. ,  0.2,  0. ], 
       [ 0. ,  0. ,  0. ,  0. ], 
       [ 0. ,  0. ,  0. ,  0. ]]) 

pad_width=([0,1], [0,1]) 告诉 np.pad 添加

  • 顶部零行
  • 底部一行
  • 左边零列
  • 右侧一栏

mode='constant' 使用 0 作为默认常量填充值。有很多 其他模式,例如 'reflect'、'linear_ramp'、'edge'、'constant'、'minimum'、 “环绕”、“对称”、“中值”、“最大值”、“平均值”。