2011-10-10 204 views
53

我有一個二維表像如何將2d列表轉換爲2d numpy數組?

a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 

,我想將它轉換爲2D numpy的陣列。我們可以不用分配內存喜歡

numpy.zeros((3,3)) 

,然後存儲值呢?

+0

@Donkopotamus,這是我的一個錯誤...我正在給出一個序列...我也是這樣做,但得到錯誤。在我從這裏得到相同的代碼後,我檢查了問題的位置......因此它有助於... offcourse在發佈之前檢查文檔...感謝友好提醒。 – Shan

回答

63

只需通過列表np.array

a = np.array(a) 

您也可以藉此機會設置dtype如果默認是不是你的願望。

a = np.array(a, dtype=...) 
+31

此解決方案不起作用。你會得到一個numpy的Python列表。 – user1816847

+16

@ user1816847只有當'sub'列表的長度不同時(例如:[[1,2],[1,2],[1,2,3]],纔會發生這種情況。 – compie

+1

如果子陣列的長度不一樣,這個解決方案只會給你一個numpy的列表陣列(即內部列表不會被轉換成numpy陣列) 這是完全合理的,因爲你不能擁有一個2D陣列(矩陣),可變的第二維。 – AHA

1

我正在使用的形式

XVals1 = [.........] 
XVals2 = [.........] 

每個列表是相同長度的出口python文件大的數據集。我用

>>> a1 = np.array(SV.XVals1) 

>>> a2 = np.array(SV.XVals2) 

然後

>>> A = np.matrix([a1,a2]) 
0

np.array()甚至比unutbu上面說的更強大。 你也可以用它來NP陣列的列表轉換成更高漁政陣列,下面是一個簡單的例子:

aArray=np.array([1,1,1]) 

bArray=np.array([2,2,2]) 

aList=[aArray, bArray] 

xArray=np.array(aList) 

xArray的形狀是(2,3),這是一個標準的NP陣列。該操作避免了循環編程。

1

只需使用下面的代碼

c = np.matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) 
matrix([[1, 2, 3], 
    [4, 5, 6], 
    [7, 8, 9]]) 

然後它會給你

您可以通過使用下面的代碼

c.shape

c.ndim校驗矩陣的形狀和尺寸