Me gustaría calcular la mathematical rank de una matriz usando scipy. La función más obvia numpy.rank
calcula la dimensión de una matriz (es decir, los escalares tienen la dimensión 0, los vectores 1, las matrices 2, etc. ...). Soy consciente de que el módulo numpy.linalg.lstsq
tiene esta capacidad, pero me preguntaba si una operación tan fundamental está incorporada en alguna clase de matriz.Calcula la puntuación de matriz usando scipy
Aquí es un ejemplo explícito:
from numpy import matrix, rank
A = matrix([[1,3,7],[2,8,3],[7,8,1]])
print rank(A)
Esto da 2
la dimensión, donde estoy buscando una respuesta de 3
.
Comprobé el rango usando Mathematica - de hecho es 3. La función a la que llama en Python es incorrecta o la está utilizando mal. – duffymo
El uso es correcto; esto es lo que me desconcertó en primer lugar. En la publicación, explico qué es lo que hace rank: calcula la dimensionalidad de la matriz. Una matriz de "rango 3" sería una lista de listas de listas. – Hooked
Tenga en cuenta que el término "rango" es algo ambiguo. Para un tensor, el rango le indica el número de índices (por ejemplo, un escalar es un tensor de rango 0, un rango de vector 1 y un rango de matriz 2). Para el álgebra lineal también existe la definición que cita más arriba. Desde el docstring, está claro que Numpy usa el primero. –