我有一個二維形狀列表(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