Dans cet article on va voir comment sous python ordonner les indices d'une matrice du plus petit au plus grand éléments sous python. Commençons par un cas simple avec une matrice M à 1 dimension:
>>> M = np.random.randint(0, 10, size=((9)))
>>> M
array([6, 8, 5, 6, 5, 9, 4, 6, 8])
dans ce cas pour obtenir les indices de plus petit ou plus grand éléments il suffit d'utiliser la fonction numpy argsort
>>> N = np.argsort(M,axis=None)
>>> N
array([6, 2, 4, 0, 3, 7, 1, 8, 5])
On voit bien ici que 6 correspond à l'indice du plus petit élément de la matrice M qui est 4. De même, 5 correspond à l'indice du grand élément de la matrice M qui est 9.
Cas d'une matrice à deux dimensions ici(3,3):
>>> import numpy as np
>>> M = np.random.randint(0, 10, size=((3,3,)))
>>> M
array([[3, 7, 4],
[4, 5, 8],
[6, 2, 6]])
>>> N = np.argsort(M,axis=None)
>>> M_Shape = M.shape
>>> for k in range(M_Shape[0]*M_Shape[1]):
... i = int( N[k] / M_Shape[1] )
... j = N[k] - M_Shape[1] * i
... print i,j
...
2 1
0 0
0 2
1 0
1 1
2 0
2 2
0 1
1 2
Dans cet exemple (2,1) (deuxieme ligne, 1ere colonne) correspond à l'indice du plus petit élément de la matrice M qui est 2. De même, (1,2) correspond à l'indice du grand élément de la matrice M qui est 8.
Recherches associées
Liens | Site |
---|---|
numpy.sort | scipy doc |
numpy.argsort | scipy doc |
numpy.random.randint | scipy doc |