我有一个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。
谢谢!
答案 0 :(得分:4)
您可以使用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作为默认的常量填充值。有很多
其他模式,例如'反映',' linear_ramp',' edge','常数'最小',
'包装','对称','中位数','最大','意思'。
答案 1 :(得分:1)
np.pad完成这项工作:
import numpy as np
a = np.array([[1, 2], [3, 4]])
print a
b=np.pad(a, ((0,2),(0,1)), mode='constant', constant_values=0)
print b