Давайте начнем с чего-то более простого - zip
для простых массивов:
In [113]: a = [1,2,3,4,5,6,7,8,9]
...: b = [11,22,33,44,55,66,77,88,99]
In [114]: list(zip(a,b))
Out[114]:
[(1, 11),
(2, 22),
(3, 33),
(4, 44),
(5, 55),
(6, 66),
(7, 77),
(8, 88),
(9, 99)]
Это то, что вы хотите - за исключением того, что это список кортежей, а не списков.
Ваш a
и b
, кажется, имеет своего рода вложенность, списки со списком. ТАК, что они должны быть сплющены, чтобы использовать этот тип zip
. Существуют способы сглаживания списков, но проще использовать массивы.
Но сначала - попробуйте выражение a
:
In [116]: a = np.array([1,2,3],[4,5,6],[7,8,9])
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-116-41a87620921a> in <module>
----> 1 a = np.array([1,2,3],[4,5,6],[7,8,9])
ValueError: only 2 non-keyword arguments accepted
У вас отсутствуют скобки:
In [117]: a = np.array([[1,2,3],[4,5,6],[7,8,9]])
In [118]: a
Out[118]:
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
In [119]: a.shape
Out[119]: (3, 3)
In [120]: b = np.array([[11,22,33],[44,55,66],[77,88,99]])
In [121]: b.shape
Out[121]: (3, 3)
Свести массив очень просто:
In [122]: a.ravel()
Out[122]: array([1, 2, 3, 4, 5, 6, 7, 8, 9])
In [123]: list(zip(a.ravel(), b.ravel()))
Out[123]:
[(1, 11),
(2, 22),
(3, 33),
(4, 44),
(5, 55),
(6, 66),
(7, 77),
(8, 88),
(9, 99)]
Мы также можем объединить эти два сглаженных массива в один:
In [125]: np.array([a.ravel(),b.ravel()])
Out[125]:
array([[ 1, 2, 3, 4, 5, 6, 7, 8, 9],
[11, 22, 33, 44, 55, 66, 77, 88, 99]])
и затем использовать numpy
transpose:
In [126]: np.array([a.ravel(),b.ravel()]).T
Out[126]:
array([[ 1, 11],
[ 2, 22],
[ 3, 33],
[ 4, 44],
[ 5, 55],
[ 6, 66],
[ 7, 77],
[ 8, 88],
[ 9, 99]])
Существует ряд других способов объединения этих массивов.
In [127]: np.array((a,b))
Out[127]:
array([[[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9]],
[[11, 22, 33],
[44, 55, 66],
[77, 88, 99]]])
In [128]: _.transpose(1,2,0).reshape(-1,2)
Out[128]:
array([[ 1, 11],
[ 2, 22],
[ 3, 33],
[ 4, 44],
[ 5, 55],
[ 6, 66],
[ 7, 77],
[ 8, 88],
[ 9, 99]])