2015-12-18 12 views
5

Ich habe ein Array A mit der Form (480, 640, 3) und ein Array B mit der Form (480, 640).2D-Array an 3D-Array anhängen, die dritte Dimension erweitern

Wie kann ich diese beiden als ein Array mit der Form (480, 640, 4) anhängen?

Ich versuchte , aber es hält nicht die Dimension, während die axis Option die ValueError: all the input arrays must have same number of dimensions verursacht.

Antwort

9

Verwenden dstack:

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

Diese behandelt die Fälle, in denen die Arrays eine unterschiedliche Anzahl von Dimensionen aufweisen und stapelt die Arrays entlang der dritten Achse.

Andernfalls verwenden append oder concatenate, werden Sie sich selbst machen müssen B dreidimensionale und geben Sie die Achse, die Sie wollen auf sie verbinden:

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

Oder die grundlegendsten Methoden zu verwenden: 'np. verketten (A, B [..., None], Achse = 2) ' – hpaulj

+0

@hpaulj Getting error' TypeError: concatenate() benötigt höchstens 2 Argumente (3 gegeben) ' – piepi

+0

@piepi, hast du dir die' ' Dokumente verketten? Sie haben Vorrang vor meinen alten Kommentaren. In jedem Fall hätte ich 'np.concatenate ([A, B [..., None]], axis = 2)' schreiben sollen. Das heißt, setzen Sie die Arrays in eine Liste – hpaulj