应该有一种方法可以像这样转换列表:
a = [[1], [2], [3], [4], [5]]
b = [[6], [7], [8], [9], [10]]
像这样:
c = [[1, 6], [2, 7], [3, 8], [4, 9], [5, 10]]
现在我正在使用 for
循环来完成此任务。
c = []
for pos in range(len(a)):
c.append([a[pos], b[pos]])
无论如何,for
循环很慢,听起来不像电视广告,但必须有更好的方法!
最佳答案
一种方法是使用 column_stack
:
>>> np.column_stack((a, b))
array([[ 1, 6],
[ 2, 7],
[ 3, 8],
[ 4, 9],
[ 5, 10]])
column_stack
首先将列表强制转换为数组并返回一个数组。
因为 a
和 b
都是单个元素列表的列表,所以当被强制转换为数组时,每个都变成一个二维列向量。因此,您也可以使用 hstack
或 concatenate
实现相同的目的(他们还将列表强制转换为具有我们想要的正确形状的数组)。使用 np.hstack((a, b))
或 np.concatenate((a, b), axis=1)
。
为了完整起见,也可以使用 np.c_
通过编写 np.c_[a, b]
。不过,其他方法更直接,也可能更快。
关于python - 如何使用 NumPy 从列表创建多维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34483800/