我有一个二维形状列表(300,000,X),其中每个子列表具有不同的大小(X)并包含0到25之间的整数。为了将数据转换为Tensor
,所有的子列表需要具有相同的长度,但我不想从转换中的子列表中丢失任何数据。如何有效地将大型非矩形2D列表转换为更大的矩形2D数组?
乍一看,我想填充比填充符(-1)最长的子列表小的所有子列表,以便创建一个矩形阵列。对于我的当前数据集,所述子列表最长是长度5037
我的转换代码如下:
for seq in new_format: seq.extend([-1] * (length - len(seq)))
然而,当有300000个序列new_format
,和length-len(seq)
一般为> 4000,则由于其庞大的规模,过程导致MemoryError
。为了平衡子列表,大多数子列表延长到5037时会变得更长。我怎样才能使这个空间更有效率或完全避免这个问题?
是所有元素的数字?如果是的话,他们的范围是什么(典型的最小值和最大值),并且是这些浮点数还是整数? – MSeifert
我更新了这个问题;所有元素都是介于0和25之间的整数。 –
还有'(300,000,X)'形状是什么意思? '300 x 0 x X'?三个零不合理。 – MSeifert