Calculer le Rang de la Matrice à l'aide de scipy

Je voudrais calculer la mathématiques rang d'une matrice à l'aide de scipy. La fonction la plus évidente numpy.rank calcule la dimension d'un tableau (c'est à dire. les scalaires avoir de dimension 0, les vecteurs 1, les matrices 2, etc...). Je suis conscient que le numpy.linalg.lstsq module est équipé de cette fonction, mais je me demandais si une telle opération fondamentale est intégré dans la classe matrix quelque part.

Voici un exemple explicite:

from numpy import matrix, rank
A = matrix([[1,3,7],[2,8,3],[7,8,1]])
print rank(A)

Cela donne 2 la dimension, où je suis à la recherche d'une réponse de 3.

  • J'ai vérifié le rang à l'aide de Mathematica - c'est en effet 3. La fonction que vous appelez dans Python est incorrect ou que vous l'utilisez mal.
  • L'utilisation est correcte - c'est ce qui m'a dérouté à la première place. Dans le post que j'ai expliquer que rang: il calcule la dimension de la matrice. Un "grade 3" tableau serait une liste de listes de listes.
  • Notez que le terme "grade" est quelque peu ambigu. Pour un tenseur, le titre vous indique le nombre d'indices (par exemple, un scalaire est un rang 0 tenseur, un vecteur de rang 1 et une matrice de rang 2). Pour l'algèbre linéaire il y a aussi la définition que vous citez ci-dessus. À partir de la docstring, il est clair que Numpy utilise l'ancien.
InformationsquelleAutor Hooked | 2010-03-18