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.
ce qui me donne donc :
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()]
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.
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]]
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 ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part [0,8,9,18,19,2,12,21]
Merci, en vous souhaitant une bonne journée,
Stabilo.
Partager