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 quea.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 anteriormentenew = np.reshape(a, (-1, ncols))
Cuando sea posible, lo
new
será solo una vista de la matriz iniciala
, lo que significa que los datos se comparten. En algunos casos, sin embargo, lanew
matriz será en su lugar acopy. Tenga en cuenta quenp.reshape
también acepta unorder
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 laa.reshape
métodoa.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)