如何将2d列表转换为2d numpy数组?


83

我有一个2D列表,例如

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

我想将其转换为2d numpy数组。我们可以在不分配内存的情况下做到吗

numpy.zeros((3,3))

然后存储值呢?


@Donkopotamus,这是我的错...我正在给出一个序列... 在从这里获得相同的代码后,我检查了问题所在的位置...因此有帮助...当然,在发布之前,我确实检查了文档...感谢您的友好提醒。

Answers:


90

只需将列表传递给np.array

a = np.array(a)

您还可以借此机会设置dtype默认值是否不是您想要的默认值。

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

102
该解决方案不起作用。您将获得numpy的python列表数组。
user1816847 '16

45
@ user1816847仅当'sub'列表的长度不同时(例如:[[1,2],[1,2],[1,2,3]]),该问题才会发生。
compie

5
如果子数组的长度不同,则此解决方案将只为您提供一个numpy列表数组(即,内部列表不会转换为numpy数组)。这完全有意义,因为您无法拥有具有可变第二维的2D数组(矩阵)。
AHA

感谢您从2017年9月开始(Ubuntu 16.04 LTS)。这就是我所需要的。比预期的要简单得多。
SDsolar

1
感谢您的重要回答,@ compie
iedmrc

2

我正在使用以以下形式导出到python文件的大数据集

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

每个列表的长度相同。我用

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

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

然后

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

什么是“ SV”在这里
gocen

2

只需使用以下代码

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

那会给你

您可以使用以下代码检查矩阵的形状和尺寸

形状

丁丁


2

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数组。该操作避免了循环编程。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.