我正在学习有关numpy的更多信息,并且需要帮助从多个列表创建numpy数组。假设我有3个列表,
a = [1, 1, 1]
b = [2, 2, 2]
c = [3, 3, 3]
如何使用每个列表作为列创建一个新的numpy数组?意味着新数组将为[[1, 2, 3], [1, 2, 3], [1, 2, 3]]
。我知道如何通过遍历列表来做到这一点,但是我不确定是否有更简单的方法来完成此操作。 numpy串联函数似乎很接近,但是我不知道如何使它完成我想要的工作。
谢谢
答案 0 :(得分:3)
尝试使用np.column_stack
:
d = np.column_stack([a, b, c])
答案 1 :(得分:2)
无需使用numpy
。 Python zip
做得很好:
In [606]: a = [1, 1, 1]
...: b = [2, 2, 2]
...: c = [3, 3, 3]
In [607]: abc = list(zip(a,b,c))
In [608]: abc
Out[608]: [(1, 2, 3), (1, 2, 3), (1, 2, 3)]
但是如果您的心脏习惯使用numpy
,那么一个好方法是制作一个2d数组并转置它:
In [609]: np.array((a,b,c))
Out[609]:
array([[1, 1, 1],
[2, 2, 2],
[3, 3, 3]])
In [610]: np.array((a,b,c)).T
Out[610]:
array([[1, 2, 3],
[1, 2, 3],
[1, 2, 3]])
其他人展示了如何使用stack
和column_stack
来执行此操作,但是在它们下面的是concatenate
。他们以一种或多种方式将列表转换为可以在axis = 1上连接的2d数组,例如
In [616]: np.concatenate([np.array(x)[:,None] for x in [a,b,c]], axis=1)
Out[616]:
array([[1, 2, 3],
[1, 2, 3],
[1, 2, 3]])