2017-06-02 50 views
-4

這是列出的名單上有numpy.array不轉換我的名單列表變爲2D numpy的數組中Python3

[[3, 2, 1, 2, 2, 3, 1], [3, 4, 2, 3, 1, 3, 2], [1, 2, 4, 1, 2, 4, 1], [3, 4, 3, 1, 4, 1, 2], [3, 1, 4, 1, 2, 3, 4], [3, 1, 3, 3, 2, 4, 1], [3, 2, 1, 2, 2, 3, 1], [3, 2, 1, 2, 2, 3, 1], [3, 2, 1, 2, 2, 3, 1], [3, 2, 1, 2, 2, 3, 1], [1, 2, 1, 2, 2, 3, 1], [4, 3, 1, 4, 1, 2, 3], [3, 2, 2, 1, 2, 1, 2], [3, 2, 1, 2, 2, 3, 1], [2, 2, 2, 1, 2, 4, 1], [1, 4, 3, 2, 2, 1, 4],....,[1, 2, 1, 1, 3, 1, 2], [3, 3, 4, 2, 3, 2, 1], [3, 2, 1, 2, 2, 2, 1], [4, 2, 1, 1, 4, 3, 4], [4, 4, 1, 2, 2, 4, 3], [3, 4, 3, 2, 2, 1, 4], [4, 1, 1, 3, 3, 4, 3]] 

我試圖numpy.array但它給一維數組這樣

[[3, 2, 1, 2, 2, 3, 1] [3, 1, 2, 4, 1, 4, 4] [1, 2, 4, 1, 2, 4, 1] ..., 
[4, 4, 1, 2, 2, 4, 3] [3, 4, 3, 2, 2, 1, 4] [4, 1, 1, 3, 3, 4, 3]] 

大小爲(15410,),這意味着它沒有被創建爲2D。

我甚至使用np.vstack和np.concatenate嘗試。但是它表示所有列表必須具有相同的維度。它們的長度都一樣。我不明白爲什麼我得到這個錯誤。我正在使用python3。還有更好的方式將列表轉換爲2D numpy數組嗎?

編輯:該列表的列表轉換爲numpy的陣列中的代碼:

 print(testFeature) 
     x_test=np.array(testFeature) 
     print(x_test) 
     print (x_test.shape) 
+0

-1無法重現 – wim

+0

那你試試?一些實際的代碼會很好。 – rammelmueller

+0

看起來像是一個2D Python列表,或者是一個Numpy數組列表。如果您沒有向我們展示您使用的方式,我們如何建議更好的方式將列表列表轉換爲2D Numpy數組? –

回答

1

如果列表被稱爲'得到錯誤一致,下面的代碼應該可以幫助您找到有問題的內容。

for i,v in enumerate(l): 
    if(len(v)!=len(l[0])): 
     print('bad element {} at {}'.format(v,i)) 

修復這些元素應該有助於解決問題。

1

一個numpy的陣列的大小字段是在它的元素的總數。您要查找的陣列的二維結構可通過「形狀」字段進行訪問。

編輯: 您是否注意到您的子列表(顯然)長度爲7,但是15410不是7的倍數?這意味着您的子列表不能全部相同的長度,這與你np.vstack

+0

雖然'(15410)更新'看起來像一個'shape'元組。他可能只是鬆散地使用術語形狀/大小。 'vstack'錯誤支持這個1d讀數。 – hpaulj

+0

@hpaulj優點在那裏。我用我剛剛注意到的另一個參數更新我的答案 –

+0

15410是列表的數量。每個列表有7個元素。所以尺寸應該是(15410,7),但它不能識別第二個維度。我的問題是我想它是一個二維數組。這就是我正在尋求幫助。 – Sanj