12

私は2つの派手な配列を持っています:

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

そして、2つを組み合わせて次のことを取得したい:

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

を使用して何かを近づけることはできますがzip、探しているものとはまったく異なります。

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

2 つの 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 ビット、Intel Core i7 2720QM @2.2 Ghz Sandy Bridge、8 GB メモリを使用してテスト済み

4

5 に答える 5

11

使用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])
于 2013-07-12T16:53:31.323 に答える
3

一部の回答では並べ替えが提案されていましたが、それらを組み合わせたいため、要素ごとの並べ替えでは同じ結果が得られません。

ここにそれを行う1つの方法があります

C = []
for elem in zip(A, B):
    C.extend(elem)
于 2013-07-12T16:31:54.513 に答える
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])
于 2014-08-26T05:48:07.383 に答える
0

これを試すことができます:

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]
于 2013-07-12T16:26:33.563 に答える