用零填充矩阵,以在python中实现所需的形状



嗨,我有一个19 x 3矩阵,但我想让它成为513 x 3矩阵。所以我只需要保留我的19行和剩下的0或1来组成513这可能吗?

您可以使用numpy.pad()

在您的情况下,如果您希望19x3值位于矩阵的中心,您应该使用:

import numpy as np
padded_matrix = np.pad(your_matrix, ((247, 247), (0, 0)))

247来自(513-19)/2

编辑:如果您想将值保留在前19行,并将矩阵填充在底部,请更改参数:

padded_matrix = np.pad(your_matrix, ((0, 513-19), (0, 0)))

您可以这样做(检查[NumPy]:为索引数组赋值,检查[NumPy]:广播以了解更多详细信息(:

>>>
>>> import numpy as np
>>>
>>>
>>> rows_inner, cols_inner = 19, 3
>>> rows_outer, cols_outer = 513, 3
>>>
>>> inner = np.arange(rows_inner * cols_inner).reshape(rows_inner, cols_inner)
>>> inner.shape, inner.dtype
((19, 3), dtype('int32'))
>>> inner
array([[ 0,  1,  2],
[ 3,  4,  5],
[ 6,  7,  8],
[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17],
[18, 19, 20],
[21, 22, 23],
[24, 25, 26],
[27, 28, 29],
[30, 31, 32],
[33, 34, 35],
[36, 37, 38],
[39, 40, 41],
[42, 43, 44],
[45, 46, 47],
[48, 49, 50],
[51, 52, 53],
[54, 55, 56]])
>>>
>>>
>>> outer = np.zeros((rows_outer, cols_outer), dtype=np.int32)
>>> outer.shape, outer.dtype
((513, 3), dtype('int32'))
>>> outer
array([[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
...,
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]])
>>>
>>>
>>> outer[0:rows_inner,:] = inner  # !!! Simple Assignment !!!
>>>
>>> outer.shape, outer.dtype
((513, 3), dtype('int32'))
>>> outer
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8],
...,
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]])

axis=0:上使用append

arr2 = np.zeros((513-19, 3))
new_arr = np.append(arr1, arr2, axis=0)

最新更新