我有一个 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'、 “环绕”、“对称”、“中值”、“最大值”、“平均值”。
