非numpy的解決方案是
In [10]: zip(a,b)
Out[10]: [([1], [6]), ([2], [7]), ([3], [8]), ([4], [9]), ([5], [10])]
很抱歉 - 不完全是。如果沒有內部支架,zip
確實重組名單的一個很好的工作:
In [11]: zip([1,2,3],[4,5,6])
Out[11]: [(1, 4), (2, 5), (3, 6)]
周圍玩多一點,我得到
In [12]: zip(zip(*a)[0],zip(*b)[0])
Out[12]: [(1, 6), (2, 7), (3, 8), (4, 9), (5, 10)]
我也列表內涵的忠實粉絲。它們是循環的一種形式,但是使用普通的Python可以儘可能快地實現緊湊和儘可能快的速度。這裏我也需要[0]
從內部列表中抽取條件。
In [25]: [[i[0],j[0]] for i,j in zip(a,b)]
Out[25]: [[1, 6], [2, 7], [3, 8], [4, 9], [5, 10]]
itertools.chain
是扁平化嵌套列表另一個很好的工具:
In [31]: zip(*(itertools.chain(*a),itertools.chain(*b)))
Out[31]: [(1, 6), (2, 7), (3, 8), (4, 9), (5, 10)]
但既然你提到numpy
我們可以使用:
In [18]: np.concatenate((a,b),axis=1)
Out[18]:
array([[ 1, 6],
[ 2, 7],
[ 3, 8],
[ 4, 9],
[ 5, 10]])
基本concatenate
作品,因爲np.array(a)
產生(5,1)
陣列。所以2個這樣的陣列可以連接成一個(5,2)
陣列,而無需進一步的形狀調整。
要回到嵌套列表格式,請在該數組上使用tolist
。
In [19]: np.concatenate((a,b),axis=1).tolist()
Out[19]: [[1, 6], [2, 7], [3, 8], [4, 9], [5, 10]]
hstack
和column_stack
還加入在1
軸,如果需要,調整尺寸。但我喜歡np.concatenate
給出(並要求)的明確控制。