Bonjour à tous,

J'ai un array de taille n*3, j'ai réussi à le trier par la troisième colonne, maintenant je voudrais sortir dans une liste, pour chaque différent indice de la colonne 3 ici 1, 2, 3 et 4, le "parcours" en partant de 0 voici l'exemple pour mieux comprendre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
import numpy as np
 
x=[[0, 3, 3], [0, 7, 4], [0, 8, 1], [0, 10, 2], [1, 11, 3], [2, 12, 1], [3, 13, 3], [4, 14, 4], [5, 15, 2], [6, 16, 3], [7, 17, 4], [8, 9, 1],
   [9, 18, 1], [10, 20, 2], [11, 21, 3], [12, 21, 1], [13, 6, 3], [14, 21, 4], [15, 21, 2], [16, 1, 3], [17, 4, 4], [18, 19, 1], [19, 2, 1], [20, 5, 2]]
 
array = np.array(x)
 
columnIndex=2
sortedArray = array[array[:,columnIndex].argsort()]
ce qui me donne donc :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[[ 8  9  1]
 [18 19  1]
 [ 0  8  1]
 [12 21  1]
 [ 2 12  1]
 [ 9 18  1]
 [19  2  1]
 [15 21  2]
 [10 20  2]
 [20  5  2]
 [ 5 15  2]
 [ 0 10  2]
 [ 3 13  3]
 [11 21  3]
 [ 1 11  3]
 [13  6  3]
 [16  1  3]
 [ 6 16  3]
 [ 0  3  3]
 [ 7 17  4]
 [ 4 14  4]
 [14 21  4]
 [17  4  4]
 [ 0  7  4]]
Je devrais donc avoir autant de listes finales que j'ai d'indices différents dans la colonne 3 ici donc 4 listes finales. Je pense qu'une liste de listes finales serait plus simple d'ailleurs.
J'aimerais les faire ressemble à ça (pour l'exemple d'indice 1) :
il faut voir ça comme un chemin, le 1 commence toujours par 0 ensuite il fait 0 vers 8 après 8 vers 9 ect... on ne peut pas les trier par ordre croissant. J'ai vraiment du mal à imaginer un algo, de plus je connais assez peu numpy. Avez vous des idées pour me mettre sur la voie ?

Merci, en vous souhaitant une bonne journée,

Stabilo.