填充二维数组以连接它们
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)。
这可能是一个非常基本的问题,但我很难把数学搞定。 我有一个包含不同大小数组的列表。形状如下所示:
(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)。