Ordonner les indices d'une matrice du plus petit au plus grand éléments sous python

Published: 22 avril 2015

DMCA.com Protection Status

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