una transpuesta multiplicar multiplicacion matriz matrices libreria ejemplos crear con python arrays matrix numpy multidimensional-array

python - transpuesta - Convierta una matriz 1D en una matriz 2D en numpy



transpuesta de una matriz en python numpy (3)

Pruebe algo como:

B = np.reshape(A,(-1,ncols))

ncols embargo, necesitarás asegurarte de que puedes dividir el número de elementos en tu matriz por ncols . También puede jugar con el orden en el que los números se extraen en B utilizando la palabra clave de order .

Quiero convertir una matriz de 1 dimensión en una matriz de 2 dimensiones especificando el número de columnas en la matriz 2D. Algo que funcionaría así:

> import numpy as np > A = np.array([1,2,3,4,5,6]) > B = vec2matrix(A,ncol=2) > B array([[1, 2], [3, 4], [5, 6]])

¿Numpy tiene una función que funciona como mi función inventada "vec2matrix"? (Entiendo que puede indexar una matriz 1D como una matriz 2D, pero esa no es una opción en el código que tengo; necesito hacer esta conversión).


Quieres reshape la matriz.

B = np.reshape(A, (-1, 2))


Tienes dos opciones:

  • Si ya no desea la forma original, lo más fácil es simplemente asignarle una nueva forma a la matriz

    a.shape = (a.size//ncols, ncols)

    Puede cambiar a.size//ncols por -1 para calcular automáticamente la forma correcta. Asegúrese de que a.shape[0]*a.shape[1]=a.size , de lo contrario se encontrará con algún problema.

  • Puede obtener una nueva matriz con la función np.reshape , que funciona principalmente como la versión presentada anteriormente

    new = np.reshape(a, (-1, ncols))

    Cuando sea posible, lo new será solo una vista de la matriz inicial a , lo que significa que los datos se comparten. En algunos casos, sin embargo, la new matriz será en su lugar acopy. Tenga en cuenta que np.reshape también acepta un order palabra clave opcional que le permite pasar del orden C de fila mayor al orden de Fortran de columna mayor. np.reshape es la versión de la a.reshape método a.reshape .

Si no puede respetar el requisito a.shape[0]*a.shape[1]=a.size , tendrá que crear una nueva matriz. Puede usar la función np.resize y mezclarla con np.reshape , como

>>> a =np.arange(9) >>> np.resize(a, 10).reshape(5,2)