Necesita un curso de actualización sobre el corte de matriz ndarray numpy. También conocido como indexación de matriz multidimensional, consulte: docs.scipy.org/doc/numpy-1.13.0/reference/arrays.indexing.html Array corte su ndarray usando corchetes, y use el delimitador de coma para separar cuánto de cada dimensión que quieras. Se verá algo así (no exactamente) así: your_array[50:100, 7, :]que aplana el objeto 3d a 2d, usando solo el corte número 7 para la 2da dimensión.
>>> arr = numpy.zeros((50,100,25))>>> arr.shape
# (50, 100, 25)>>> new_arr = arr.reshape(5000,25)>>> new_arr.shape
# (5000, 25)# One shape dimension can be -1. # In this case, the value is inferred from # the length of the array and remaining dimensions.>>> another_arr = arr.reshape(-1, arr.shape[-1])>>> another_arr.shape
# (5000, 25)
Una ligera generalización a la respuesta de Alexander: np.reshape puede tomar -1 como argumento, lo que significa "tamaño de matriz total dividido por el producto de todas las demás dimensiones enumeradas":
Por ejemplo, para aplanar todo menos la última dimensión:
Una ligera generalización a la respuesta de Peter: puede especificar un rango sobre la forma de la matriz original si desea ir más allá de las matrices tridimensionales.
por ejemplo, para aplanar todas las dos dimensiones excepto las últimas :
your_array[50:100, 7, :]
que aplana el objeto 3d a 2d, usando solo el corte número 7 para la 2da dimensión.Respuestas:
Echa un vistazo a numpy.reshape .
fuente
Una ligera generalización a la respuesta de Alexander: np.reshape puede tomar -1 como argumento, lo que significa "tamaño de matriz total dividido por el producto de todas las demás dimensiones enumeradas":
Por ejemplo, para aplanar todo menos la última dimensión:
fuente
Una ligera generalización a la respuesta de Peter: puede especificar un rango sobre la forma de la matriz original si desea ir más allá de las matrices tridimensionales.
por ejemplo, para aplanar todas las dos dimensiones excepto las últimas :
EDITAR: Una ligera generalización a mi respuesta anterior: por supuesto, también puede especificar un rango al comienzo de la remodelación:
fuente
Un enfoque alternativo es usar
numpy.resize()
como en:fuente