2017-11-10 2 views
0

Ich habe zwei numpy Matrix A und B. A ist 1000 x 6, wie folgt aussieht:kombinieren zwei numpy Arrays und umformen

[ [a1_1, a1_2, a1_3, a1_4, a1_5,a1_6], 
    [a2_1, a2_2, a2_3, a2_4, a2_5,a2_6], 
    [a3_1, a3_2, a3_3, a3_4, a3_5,a3_6], 
    : 
    : 
    [a1000_1, a1000_2, a1000_3, a1000_4, a1000_5,a1000_6]] 

B ist auch 1000x6 und ist wie:

[ [b1_1, b1_2, b1_3, b1_4, b1_5,b1_6], 
    [b2_1, b2_2, b2_3, b2_4, b2_5,b2_6], 
    [b3_1, b3_2, b3_3, b3_4, b3_5,b3_6], 
    : 
    : 
    [b1000_1, b1000_2, b1000_3, b1000_4, b1000_5,b1000_6]] 

dann ich möchte eine 3D-Matrix erstellen: 1000x6x2, der sollte wie folgt aussieht:

[[[a1_1, b1_1], [a1_2, b1_2], [a1_3, b1_3], [a1_4, b1_4], [a1_5, b1_5],[a1_6, b1_6]], 
    [[a2_1, b2_1], [a2_2, b2_2], [a2_3, b2_3], [a2_4, b2_4], [a2_5, b2_5],[a2_6, b2_6]], 
    [[a3_1, b3_1], [a3_2, b3_2], [a3_3, b3_3], [a3_4, b3_4], [a3_5, b3_5],[a3_6, b3_6]], 
     : 
     : 
    [[a1000_1, b1000_1], [a1000_2, b1000_2], [a1000_3, b1000_3], [a1000_4, b1000_4], [a1000_5, b1000_5],[a1000_6, b1000_6]]] 

ich eine leere 1000x6x2 Matrix C erzeugen kann, dann Iterierte Matrix A und B, um den Wert in C einzeln zuzuweisen. Aber ich frage mich, gibt es eine elegantere Möglichkeit, A und B zu kombinieren, die Matrix C umzuformen und zu erhalten? Vielen Dank!

+0

'C [:,:, 0 ] = A', 'C [:,, 1] = B' sollte schnell und einfach sein. – hpaulj

Antwort

1

Sie können mit numpy.dstack welche Stapel-Arrays in Sequenz Tiefe wise (entlang der dritten Achse):

C = np.dstack((A, B)) 

Or numpy.stack((A,B),axis=-1):


import numpy as np 
A = np.arange(6000).reshape(1000,6) 
B = np.arange(6000).reshape(1000,6) 
​ 
C = np.dstack((A, B)) 

C.shape 
# (1000, 6, 2) 

C = np.stack((A,B), axis=-1) 

C.shape 
# (1000, 6, 2)