如何在python中按元素合并两个numpy数组?

zrfyljdw  于 2023-02-11  发布在  Python
关注(0)|答案(6)|浏览(184)

我有两个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企业版64位,英特尔酷睿i7 2720QM@2.2 Ghz桑迪Bridge,8 GB内存

neekobn8

neekobn81#

使用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])
0g0grzrc

0g0grzrc2#

您还可以使用切片:

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

dtcbnfnu3#

>>> 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])
cunj1qz1

cunj1qz14#

有些答案建议排序,但由于您希望将它们组合在一起,按元素排序不会达到相同的结果。
下面是一种方法

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

qcbq4gxm5#

你可以试试这个:

C = sorted(A.tolist() + B.tolist())
  1. A.tolist()将产生[1, 3, 5, 7]
  2. B.tolist()将产生[2, 4, 6, 8]
  3. A.tolist() + B.tolist()-[1, 3, 5, 7, 2, 4, 6, 8]
  4. sorted(...)-[1, 2, 3, 4, 5, 6, 7, 8]
    未排序:
C = [y for x in zip(A, B) for y in x]
mefy6pfw

mefy6pfw6#

其中:

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

您可以用途:

np.array([A, B]).transpose().flatten().tolist()

它也可以处理任意数量的数组。

相关问题