2009-11-13 20 views

Respuesta

6

hstack y vstack hacer ningún cambio en el número de dimensiones de las matrices: se limitan a los pusieron "lado a lado". Por lo tanto, la combinación de matrices bidimensionales crea una nueva matriz bidimensional (¡no una 3D!).

Puede hacer lo que Daniel sugirió (use directamente numpy.array([d1, d2])).

Puede convertir alternativamente las matrices a las matrices en 3D antes de apilarlas, añadiendo una nueva dimensión a cada matriz:

d3 = numpy.vstack([ d1[newaxis,...], d2[newaxis,...] ]) # shape = (2, 18, 18) 

De hecho, d1[newaxis,...].shape == (1, 18, 18), y se puede apilar ambas matrices 3D directamente y obtener el nuevo Matriz 3D (d3) que usted quería.

+0

:) gracias EOL, ahora sabré más sobre vstack, hstack – vernomcrp

+1

'np.vstack ([a [np.newaxis, ...], b [np.newaxis, ...]])' funcionó como el encanto ! Gracias. – thepunitsingh

21

Sólo haciendo d3 = array([d1,d2]) parece que funciona para mí:

>>> from numpy import array 
>>> # ... create d1 and d2 ... 
>>> d1.shape 
(18,18) 
>>> d2.shape 
(18,18) 
>>> d3 = array([d1, d2]) 
>>> d3.shape 
(2, 18, 18) 
+0

oh su trabajo, gracias Daniel :) – vernomcrp

+1

Tengo una pregunta similar. Si ya tengo el d3 con forma (2,18,18) y quiero agregar otro conjunto de 2 d4 d4 (18x18) a d3 para hacer el conjunto de 3-d (3,18,18). ¿Que debería hacer? –

+1

Simplemente 'vstack (d3, d4 [np.newaxis, ...])', como en mi respuesta. – EOL

Cuestiones relacionadas