Объединить два массива в шаблоне zipper

#python #numpy #concatenation #numpy-ndarray

#python #numpy #конкатенация #numpy-ndarray

Вопрос:

Допустим, у меня есть два массива [1, 3, 5] и [2, 4, 6], каков наилучший способ их объединения, чтобы получить [1, 2, 3, 4, 5, 6] без использования циклов или рекурсии и просто numpy?

Ответ №1:

Поскольку вы отметили numpy :

 np.array((a,b)).T.ravel()
  

или когда a,b могут быть разного размера:

 np.array(list(zip(a,b))).ravel()
  

Вывод:

 array([1, 2, 3, 4, 5, 6])
  

Ответ №2:

 a = [1, 3, 5]
b = [2, 4, 6]
sorted([*a, *b])
  

Вывод:

 [1, 2, 3, 4, 5, 6]
  

Ответ №3:

Вы можете сделать это без numpy :

Просто добавьте их, a = [1,3,5] [2,4,6] а затем отсортируйте sorted(a)

Комментарии:

1. Я думаю, что OP хочет создать список или массив чередующихся значений из каждого из входных списков, а не способ их сортировки.

2. Я также понял это таким образом

Ответ №4:

В чистом python вы можете использовать

 import itertools
list(itertools.chain(*zip(array1, array2)))
  

Ответ №5:

Вы также можете использовать понимание списка:

 [x for t in zip(a,b) for x in t]
  

Обратите внимание, что это эквивалентно явным циклам в том же порядке

 out = []
for t in zip(a,b):
   for x in t:
       out.append(x)