填充二维数组以连接它们

pad 2d arrays in order to concatenate them

这可能是一个非常基本的问题,但我很难把数学搞定。 我有一个包含不同大小数组的列表。形状如下所示:

(30, 300)
(7, 300)
(16, 300)
(10, 300)
(12, 300)
(33, 300)
(5, 300)
(11, 300)
(18, 300)
(31, 300)
(11, 300)

我想将它们用作文本分类中的一个特征,这就是为什么我需要将它们连接成一个大矩阵,这是不可能的,因为形状不同。 我的想法是用零填充,这样它们都具有 (33,300) 的形状,但我不确定该怎么做。 我试过这个:

padded_arrays = []
for p in np_posts:
    padded_arrays.append(numpy.pad(p,(48,0),'constant',constant_values = (0,0)))

导致

(78, 348)
(55, 348)
(64, 348)
(58, 348)
(60, 348)
(81, 348)
(53, 348)
(59, 348)
(66, 348)
(79, 348)
(59, 348)

请帮帮我

您需要为每个维度每个边指定填充。填充大小是形状的固定差异,因此您必须使其适应“缺失”大小:

np.pad(p, ((0, 33 - p.shape[0]), (0, 0)), 'constant', constant_values=0)

(0, 33 - p.shape[0]) 将第一个维度填充到 右边缘 (追加单元格),而 填充左边缘 (前置)。

(0, 0) 禁用第二个维度的填充,保持其大小不变 (300-> 300)。