[英]How do I combine two numpy arrays element wise in 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企业版64位,英特尔酷睿i7 2720QM @ 2.2 Ghz Sandy Bridge,8 GB Mem进行测试
使用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])
你也可以使用切片:
C = np.empty((A.shape[0]*2), dtype=A.dtype)
C[0::2] = A
C[1::2] = B
>>> 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])
一些答案建议排序,但由于你想要将它们组合在一起,因此元素排序将无法实现相同的结果。
这是一种方法
C = []
for elem in zip(A, B):
C.extend(elem)
你可以试试这个:
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]
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]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.