2017-03-09 14 views
0
import numpy as np 
i = np.array([ [0,1],[1,2] ]) 
j = np.array([ [2,1],[3,3] ]) 
k = np.array([ [2,1],[3,3] ]) 
l = np.array([ [2,1],[3,3] ]) 
l1 = np.array([ [2,1],[3,3] ]) 
l2 = np.array([ [2,1],[3,3] ]) 
l3 = np.array([ [2,1],[3,3] ]) 
l4 = np.array([ [2,1],[3,3] ]) 

a = [i, j, k, l, l1, l2, l3, l4] 
b = [] 
b.append(a) 
b.append(np.array([ [2,1],[3,3] ])) 
b.append(np.array([ [2,1],[3,3] ])) 
b.append(np.array([ [2,1],[3,3] ])) 
b.append(np.array([ [2,1],[3,3] ])) 
b.append(np.array([ [2,1],[3,3] ])) 
arr = np.array(b) 
print np.shape(b) 
c = np.reshape(arr, (13, 2 ,2)) 
print np.shape(c) 

當我嘗試這個我收到此錯誤信息:如何重塑在列表中的元素:ValueError異常:新陣列的總大小必須保持不變

ValueError: total size of new array must be unchanged 

如何重塑一個列表元素。我無法將列表中的數組len()重新整形。

+0

哪裏錯誤 - 哪條線?這些印刷品顯示什麼? – Roelant

回答

0

當你打印出你arr你會得到這樣的事情:

array([ [array([[0, 1], 
     [1, 2]]), array([[2, 1], 
     [3, 3]]), array([[2, 1], 
     [3, 3]]), array([[2, 1], 
     [3, 3]]), array([[2, 1], 
     [3, 3]]), array([[2, 1], 
     [3, 3]]), array([[2, 1], 
     [3, 3]]), array([[2, 1], 
     [3, 3]])], 
     [[2 1] 
[3 3]], [[2 1] 
[3 3]], [[2 1] 
[3 3]], [[2 1] 
[3 3]], 
     [[2 1] 
[3 3]]], dtype=object) 

你可能會明白,這不能被重塑。它是一個object的np數組。其中的條目恰好是np-array。

但有一個可重新調整的實體,你需要有一個固定維數的np數組,其中包含一個簡單類型(int,float,...)。你的建築物的輸入(append()調用)構建了一些無法重構的東西。

我猜你可能會得到你想要的東西,當你更換這些線路:此線路

b = [] 
b.append(a) 

b = a[:] 

然後,我可以很容易地做到這一點的休息後:

c = np.reshape(arr, (13, 2 ,2)) 

c將會是這樣:

array([[[0, 1], 
     [1, 2]], 

     [[2, 1], 
     [3, 3]], 

     [[2, 1], 
     [3, 3]], 

     [[2, 1], 
     [3, 3]], 

     [[2, 1], 
     [3, 3]], 

     [[2, 1], 
     [3, 3]], 

     [[2, 1], 
     [3, 3]], 

     [[2, 1], 
     [3, 3]], 

     [[2, 1], 
     [3, 3]], 

     [[2, 1], 
     [3, 3]], 

     [[2, 1], 
     [3, 3]], 

     [[2, 1], 
     [3, 3]], 

     [[2, 1], 
     [3, 3]]]) 
+0

我已經添加圖像集到尺寸低於(1L,281L,500L) (2L,281L,500L) (3L) (4L)的列表。前兩個圖像將顯示3D陣列,但從第三張圖像中,它顯示爲1D。如何從列表中檢索圖像數據.http://stackoverflow.com/questions/42532232/python-to-create-ndarray-from-list-to-pass-to-svm-valueerror-setting-an-array – Taherlal

+0

I don沒有看到你的評論和我的答案之間的聯繫,抱歉。你想在這裏問一個完全獨立的東西嗎?那麼請打開另一個問題。 – Alfe

+0

請在此鏈接中找到提出的問題http://stackoverflow.com/questions/42532232/python-to-create-ndarray-from-list-to-pass-to-svm-valueerror-setting-an-array – Taherlal

相關問題