[英]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.