应该有办法改变这样的列表:
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
都是单个元素列表的列表,因此在强制转换为数组时,每个元素都成为2D列向量.因为这个事实,你也可以使用hstack
或concatenate
实现同样的事情(它们也将列表强制转换为具有我们想要的正确形状的数组).使用np.hstack((a, b))
或np.concatenate((a, b), axis=1)
.
为了完整起见,也可以np.c_
通过写作来使用np.c_[a, b]
.其他方法更直接,但可能更快.