簡體   English   中英

將多維列表轉換為多維numpy.array

[英]Convert multidimensional list to multidimensional numpy.array

我在將python-list-of-list-of-list轉換為3維numpy數組時遇到麻煩。

a = [
   [ 
     [1,2,3,4], # = len 4
     ...
   ], # = len 58
   ...
] # = len 1245

當我在上面調用a = np.array(a)時,它報告形狀為(1245,)而我無法對其進行整形。 a.reshape(1245,58,4)它給我錯誤: ValueError: cannot reshape array of size 1245 into shape (1245,58,4)但是如果我打印a [0],它會給我58元素列表和一個正如我所期望的,[0] [0]給了我4個元素的列表,因此數據就在那里。

我看到很多堆棧交換帖子都希望將其扁平化,但我只想將其變成已經是形狀的numpy數組。 我不知道為什么numpy.array()沒有看到其他尺寸。

相同級別(相同numpy軸)的列表的大小必須相同。 否則,您將獲得一個列表數組。

np.array([[0, 1], [2]])[0]  # returns [0, 1]

np.array([[0, 1], [2, 3]])[0]  # returns array([1, 2])

您可以通過將列表轉換為數組之前調用列表中的[ pad ]來解決此問題。

此外, reshape的尺寸“應與原始形狀兼容”。 含義(推理時為-1值除外)新尺寸的乘積應等於舊尺寸的乘積。

例如,在您的情況下,您有一個形狀數組(1245,)因此可以調用:

a.reshape(83, 5, 3)  # works
a.reshape(83, -1, 3)  # works
a.reshape(83, 5, 5)  # fails since 83 * 5 * 5 = 2075 != 1245

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM