Solo por curiosidad, al usar el metodo reshape de numpy pense que me retornaria la matriz transpuesta pero no fue asi ¿entonces como func...

Sebastián Andrade

Sebastián Andrade

Pregunta
studenthace 4 años

Solo por curiosidad, al usar el metodo reshape de numpy pense que me retornaria la matriz transpuesta pero no fue asi ¿entonces como funciona el metodo reshape?

6 respuestas
para escribir tu comentario
    Sebastian vier

    Sebastian vier

    studenthace 3 años

    Lo que hace reshape es lo pone todo en una línea y comienza nivel por nivel a separar los arrays.

    Por eso si tú tienes [[0,1],[2,3],[4,5]] que es una matriz de 3,2 (desde dentro hacia afuera). La matriz está forma de 3 vectores con 2 elementos cada vector. Si le pide reshape(2,3) te va a dar. primero va a separar [0,1,2,3,4,5] en vectores de 3. [0,1,2] y [3,4,5] y luego te va a juntar eso 2 vectores en un única matriz => [[0,1,2] , [3,4,5]]. En cambio transpose agarra lo que nosotros llamaríamos columna.

    Sebastian vier

    Sebastian vier

    studenthace 3 años

    El método reshape lo que hace es cambiar la forma de la matriz. Bastante obvio? Por ejemplo si tienes una matrix.shape = (4,2) uno puedo pedirle a numpy que sea (2,4). Esto es muy útil si quieres crear una matriz con 10 filas y 10 columnas para todos los valores del 1 al 100. Haces np.array([i for i in range(1,101)).reshape(10,10)

    Lo único que siempre tienes que tener en cuenta con array.reshape es que el número que el producto del array.shape sean iguales a array.size. Es decir que los elementos se puedan distribuir con el nuevo forma al completo.

    Anthony Ismael Manotoa Moreno

    Anthony Ismael Manotoa Moreno

    studenthace 4 años

    Hola :)

    Yo lo entendí de esta manera: Tienes un vector, digamos de 8 elementos (coordenadas, etc.)

    vector = np.arange(1,9) >>> array([1, 2, 3, 4, 5, 6, 7, 8])

    Entonces puedes hacerle un reshape para que se transforme de vector a matriz, siempre y cuando esos 8 elementos den en las dimensiones que coloques, dicho de otra manera, al multiplicar las dimensiones tiene que dar igual a 8:

    print(vector.reshape(2,4)) >>> [[1 2 3 4] [5 6 7 8]] print(vector.reshape(4,2)) >>> [[1 2] [3 4] [5 6] [7 8]] print(vector.reshape(8,1)) >>> [[1] [2] [3] [4] [5] [6] [7] [8]]

    Y si escoges algo que no cumpla con lo anterior:

    print(vector.reshape(2,5)) >>> ValueError: cannot reshape array of size 8 into shape (2,5)

    Por último, podemos hacer reshape a tensores o cosas de muchas dimensiones que no tengo idea de cómo se llamen jajaja, pero aquí un reshape a 8 dimensiones:

    print(vector.reshape(1,1,1,1,1,1,8,1)) >>> [[[[[[[[1] [2] [3] [4] [5] [6] [7] [8]]]]]]]]
    jhonatan larico

    jhonatan larico

    studenthace 4 años

    no hay matemática detrás solo estas modificando el tamaño de la matriz ejm si tienes una matriz A = 3X4 y haces A.reshape(6x2) solo estas modificando la forma de la matriz. La única consideración es que los tamaños de la matriz deben coincidir.

    Sebastián Andrade

    Sebastián Andrade

    studenthace 4 años

    Si, eso lo tengo entendido pero mi pregunta es ¿como hace matematicamente esta operacion la libreria?

    jhonatan larico

    jhonatan larico

    studenthace 4 años

    reshape modifica el tamaño de tu matriz

Curso de Fundamentos de Álgebra Lineal con Python

Curso de Fundamentos de Álgebra Lineal con Python

Conoce y aplica todos los conceptos fundamentales de Álgebra Lineal, la rama de las matemáticas que estudia los vectores, matrices y tensores, que necesitas para desarrollar tu carrera profesional como científico de datos.

Curso de Fundamentos de Álgebra Lineal con Python
Curso de Fundamentos de Álgebra Lineal con Python

Curso de Fundamentos de Álgebra Lineal con Python

Conoce y aplica todos los conceptos fundamentales de Álgebra Lineal, la rama de las matemáticas que estudia los vectores, matrices y tensores, que necesitas para desarrollar tu carrera profesional como científico de datos.