2012-04-07 16 views

Respuesta

12

ravel que:

>>> a = numpy.arange(25).reshape((5, 5)) 
>>> b = a.ravel() 
>>> b[0] = 55 
>>> a 
array([[55, 1, 2, 3, 4], 
     [ 5, 6, 7, 8, 9], 
     [10, 11, 12, 13, 14], 
     [15, 16, 17, 18, 19], 
     [20, 21, 22, 23, 24]]) 

O reshape que:

>>> a = numpy.arange(27).reshape((3, 3, 3)) 
>>> b = a.reshape((9, 3)) 
>>> b[0] = 55 
>>> a 
array([[[55, 55, 55], 
     [ 3, 4, 5], 
     [ 6, 7, 8]], 

     [[ 9, 10, 11], 
     [12, 13, 14], 
     [15, 16, 17]], 

     [[18, 19, 20], 
     [21, 22, 23], 
     [24, 25, 26]]]) 

En circunstancias normales, éstos ambos devuelven una vista de la matriz original, en lugar de una copia.

+0

¡Gracias! 'reshape' hizo el truco para mí. Pensé antes que rompería el mapeo uno a uno entre mis matrices 2D y vectores. ¡Pero no, funcionó! –

7

Si usted no sabe la forma de la matriz de entrada:

images.reshape((images.shape[0], -1)) 

-1 dice formar de nuevo a trabajar a cabo las restantes dimensiones. Esto supone que desea aplanar el primer eje de las imágenes.

Cuestiones relacionadas