En general, puede concatenar una secuencia completa de matrices a lo largo de cualquier eje:
numpy.concatenate( LIST, axis=0 )
pero usted no tiene que preocuparse por la forma y la dimensión de cada matriz en la lista (para una salida de 3x5 de 2 dimensiones, es necesario asegurarse de que todos ellos son de 2 dimensiones matrices n-por-5 ya). Si desea concatenar matrices unidimensionales como filas de una salida bidimensional, debe ampliar su dimensionalidad.
Como señala la respuesta de Jorge, también existe la función stack
, introducida en numpy 1.10:
numpy.stack( LIST, axis=0 )
Esto toma el enfoque complementario: crea una nueva vista de cada matriz de entrada y agrega una dimensión adicional (en este caso, a la izquierda, por lo que cada n
matriz 1D -elemento se convierte en una matriz 1 por n
2D) antes de concatenar. Solo funcionará si todas las matrices de entrada tienen la misma forma, incluso a lo largo del eje de concatenación.
vstack
(o equivalentemente row_stack
) es a menudo una solución más fácil de usar porque tomará una secuencia de matrices de 1 y / o 2 dimensiones y expandirá la dimensionalidad automáticamente donde sea necesario y solo cuando sea necesario, antes de concatenar la lista completa. Cuando se requiere una nueva dimensión, se agrega a la izquierda. Nuevamente, puede concatenar una lista completa a la vez sin necesidad de iterar:
numpy.vstack( LIST )
Este comportamiento flexible también se muestra en el atajo sintáctico numpy.r_[ array1, ...., arrayN ]
(observe los corchetes). Esto es bueno para concatenar algunas matrices con nombres explícitos, pero no es bueno para su situación porque esta sintaxis no aceptará una secuencia de matrices, como su LIST
.
También hay una función column_stack
y un atajo análogos c_[...]
, para el apilamiento horizontal (en columnas), así como una función casi análoga, hstack
aunque por alguna razón esta última es menos flexible (es más estricta en cuanto a la dimensionalidad de las matrices de entrada e intenta concatenar Matrices 1-D de extremo a extremo en lugar de tratarlas como columnas).
Finalmente, en el caso específico de apilamiento vertical de matrices 1-D, lo siguiente también funciona:
numpy.array( LIST )
... porque las matrices se pueden construir a partir de una secuencia de otras matrices, agregando una nueva dimensión al principio.
LIST = [[array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5],[1,2,3,4,5])]
esta no es la sintaxis correcta de Python. Por favor aclare.