Resumen

Hay 2 funciones muy importantes de los arreglos (Shape y Reshape). La forma de un arreglo nos va a decir con que estructura se está trabajando (tamaño, manipular, ingresar).

Shape

Indica la forma del arreglo.

arr = np.random.randint(1,10,(3,2))
arr.shape
---> (3, 2)
arr
---> array([[4, 2],
          [4, 8],
          [4, 3]])

Reshape

transforma el arreglo mientras se mantengan los elementos.

arr.reshape(1,6)
----> array([[4, 2, 4, 8, 4, 3]])
arr.reshape(2,3)
---> array([[4, 2, 4],
          [8, 4, 3]])
np.reshape(arr,(1,6))
---> array([[4, 2, 4, 8, 4, 3]])

Se puede hacer un reshape como lo haría C.

np.reshape(arr,(2,3), 'C')
---> array([[4, 2, 4],
       [8, 4, 3]])

También se puede hacer reshape a como lo haría Fortran.

np.reshape(arr,(2,3), 'F')
---> array([[4, 4, 8],
       [4, 2, 3]])

Además, existe la opción de hacer reshape según como esté optimizado nuestro computador. En este caso es como en C.

np.reshape(arr,(2,3), 'A')
---> array([[4, 2, 4],
       [8, 4, 3]])
No puedes cambiar la "forma" a la "forma" original del array, si tienes un (3,3) no lo puedes pasar a (4,2). 
No respeta los 9 elementos del array original

Reto

  • Crear un array de cualquier dimensión y cambiar sus dimensiones.
  • Intenta cambiar el array de forma que no respete la estructura original

Contribución creada por: Edward Giraldo.