2015-12-18 18 views
5

Ho un array A con forma (480, 640, 3) e un array B con forma (480, 640).Aggiungi array 2D a array 3D, estendendo la terza dimensione

Come posso aggiungere questi due come una matrice con la forma (480, 640, 4)?

Ho provato ma non mantiene la dimensione, mentre l'opzione axis causa il ValueError: all the input arrays must have same number of dimensions.

risposta

9

Uso dstack:

>>> np.dstack((A, B)).shape 
(480, 640, 4) 

Questo gestisce i casi in cui le matrici hanno differenti numeri di dimensioni e impila le matrici lungo il terzo asse.

In caso contrario, utilizzare o appendconcatenate, dovrete fare B tridimensionale te stesso e specificare l'asse che si desidera unirsi a loro sul:

>>> np.append(A, np.atleast_3d(B), axis=2).shape 
(480, 640, 4) 
+2

O, per usare i metodi più elementari: 'NP. concatenare (A, B [..., None], axis = 2) ' – hpaulj

+0

@hpaulj Ottenere errore' TypeError: concatenate() richiede al massimo 2 argomenti (3 dati) ' – piepi

+0

@piepi, hai guardato il' documenti concatenati? Hanno priorità sui miei vecchi commenti. In ogni caso, avrei dovuto scrivere 'np.concatenate ([A, B [..., None]], axis = 2)'. Cioè, metti gli array in una lista – hpaulj