La matrice d'indexation dans Numpy

J'était de plus en plus confuse au cours de l'élaboration d'un petit script Python impliquant des opérations matricielles, j'ai donc tiré un obus de jouer avec un jouet exemple et de développer une meilleure compréhension de la matrice d'indexation dans Numpy.

C'est ce que j'ai fait:

>>> import numpy as np
>>> A = np.matrix([1,2,3])
>>> A
matrix([[1, 2, 3]])
>>> A[0]
matrix([[1, 2, 3]])
>>> A[0][0]
matrix([[1, 2, 3]])
>>> A[0][0][0]
matrix([[1, 2, 3]])
>>> A[0][0][0][0]
matrix([[1, 2, 3]])

Comme vous pouvez l'imaginer, cela a pas m'a aidé à développer une meilleure compréhension de la matrice d'indexation dans Numpy. Ce comportement aurait du sens pour quelque chose que je décrirais comme "Un tableau de lui-même", mais je doute que quelqu'un dans son esprit droit serait choisir que comme un modèle pour les matrices dans une bibliothèque scientifique.

Ce qui est, ensuite, la logique de la sortie, j'ai obtenu? Pourquoi le premier élément d'une matrice de l'objet lui-même?

PS: je sais comment faire pour obtenir la première entrée de la matrice. Ce qui m'intéresse, c'est la logique derrière cette décision de conception.

EDIT: je ne suis pas demandant comment accéder à un élément de la matrice, ou pourquoi une ligne de matrice se comporte comme une matrice. Je vous demande une définition du comportement de la matrice lors de indexés avec un numéro unique. Il s'agit d'une action typique de tableaux, mais le comportement qui en résulte n'en est rien, comme celui que vous attendez d'un tableau. Je voudrais savoir comment cela est mis en place et quelle est la logique derrière la décision de conception.

  • La syntaxe est Un[dim1, dim2, ...]. Pour ce cas, pour obtenir le premier élément, vous feriez Un[0,0], deuxième élément de[0,1] et le troisième élément de[0,2]. C'est un 1 x 3 de la matrice.
  • Personne n'a vraiment lu le PS?
  • Le matrix classe est codé en dur pour les avoir toujours deux dimensions (lignes et colonnes). C'est préservée par tranchage et des opérations d'indexation (sauf si vous accédez à un seul élément, par exemple A[0, 0]). Par ailleurs, pour la plupart des utilisations, le ndarray classe (c'est à dire la norme tableau numpy) est préféré; recherche numpy array vs matrix de trouver beaucoup de discussions sur ce sujet.
  • quand j'ai d'abord besoin de faire de la matrice de maths dans numpy toute l'aide que j'ai pu trouver m'a dirigé vers l'utilisation ndarray. Il est beaucoup plus souple et pour chacune des choses que j'ai testé c'était plus rapide.