2011-10-10 103 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校验矩阵的形状和尺寸

相关问题