如何使用NumPy从列表创建多维数组?

SAR*_*ose 3 python arrays numpy list

应该有办法改变这样的列表:

a = [[1], [2], [3], [4], [5]]
b = [[6], [7], [8], [9], [10]]
Run Code Online (Sandbox Code Playgroud)

这样的事情:

c = [[1, 6], [2, 7], [3, 8], [4, 9], [5, 10]]
Run Code Online (Sandbox Code Playgroud)

现在我正在使用for循环完成此操作.

c = []
for pos in range(len(a)):
    c.append([a[pos], b[pos]])
Run Code Online (Sandbox Code Playgroud)

无论如何,for循环很慢,而不是听起来像一个电视购物节目,但必须有一个更好的方式!

Ale*_*ley 6

一种方法是使用column_stack:

>>> np.column_stack((a, b))
array([[ 1,  6],
       [ 2,  7],
       [ 3,  8],
       [ 4,  9],
       [ 5, 10]])
Run Code Online (Sandbox Code Playgroud)

column_stack 首先将列表强制转换为数组并返回一个数组.

由于ab都是单个元素列表的列表,因此在强制转换为数组时,每个元素都成为2D列向量.因为这个事实,你也可以使用hstackconcatenate实现同样的事情(它们也将列表强制转换为具有我们想要的正确形状的数组).使用np.hstack((a, b))np.concatenate((a, b), axis=1).

为了完整起见,也可以np.c_通过写作来使用np.c_[a, b].其他方法更直接,但可能更快.