Как объединить два элемента массива numpy в python?

У меня есть два массива numpy:

A = np.array([1, 3, 5, 7])
B = np.array([2, 4, 6, 8])

и я хочу получить следующее от объединения двух:

C = [1, 2, 3, 4, 5, 6, 7, 8]

Я могу получить что-то близкое, используя zip, но не совсем то, что я ищу:

>>> zip(A, B)
[(1, 2), (3, 4), (5, 6), (7, 8)]

Как объединить два элемента массива numpy мудрый?


Я быстро проверил 50 000 элементов в каждом массиве (100 000 комбинированных элементов). Вот результаты:

User Ma3x:      Time of execution: 0.0343832323429      Valid Array?:  True
User mishik:    Time of execution: 0.0439064509613      Valid Array?:  True
User Jaime:     Time of execution: 0.02767023558        Valid Array?:  True

Протестировано с использованием Python 2.7, Windows 7 Enterprise 64-bit, Intel Core i7 2720QM @2.2 Ghz Sandy Bridge, 8 GB Mem

Ответ 1

Используйте np.insert:

>>> A = np.array([1, 3, 5, 7])
>>> B = np.array([2, 4, 6, 8])
>>> np.insert(B, np.arange(len(A)), A)
array([1, 2, 3, 4, 5, 6, 7, 8])

Ответ 2

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

C = np.empty((A.shape[0]*2), dtype=A.dtype)
C[0::2] = A
C[1::2] = B

Ответ 3

>>> import numpy as np
>>> A=np.array([1,3,5,7])
>>> B=np.array([2,4,6,8])
>>> C=np.dstack([A,B])
>>> D=C.reshape((1,8))[0]
>>> D
array([1, 2, 3, 4, 5, 6, 7, 8])

Ответ 4

В некоторых ответах предлагается сортировка, но поскольку вы хотите объединить их, сортировка по элементам не приведет к такому же результату.

Вот один из способов сделать это

C = []
for elem in zip(A, B):
    C.extend(elem)

Ответ 5

Вы можете попробовать следующее:

C = sorted(A.tolist() + B.tolist())
  • A.tolist() даст [1, 3, 5, 7]
  • B.tolist() даст [2, 4, 6, 8]
  • A.tolist() + B.tolist() - [1, 3, 5, 7, 2, 4, 6, 8]
  • sorted(...) - [1, 2, 3, 4, 5, 6, 7, 8]

Без сортировки:

C = [y for x in zip(A, B) for y in x]