2 votes

Trier une matrice par la première colonne Julia

J'ai une matrice comme celle-ci dans Julia :

5×2 Array{Float64,2}:
5.52777     7.51186e15
0.00444418  0.0311171 
3.26441     9.72657   
3.38447     1.7144e16 
0.459852    6.90901   

Je voudrais l'ordonner par la première colonne et obtenir quelque chose comme ceci :

0.00444418  0.0311171 
0.459852    6.90901   
3.26441     9.72657   
3.38447     1.7144e16 
5.52777     7.51186e15

Comment puis-je le faire ?

2voto

user24195 Points 31

Le résultat attendu que vous avez posté ne montre pas que vous voulez l'ordonner par la première colonne, donc ce que vous voulez n'est pas clair.

Si vous voulez trier la matrice par sa première colonne, vous pouvez utiliser sortperm et l'indexation :

julia> m[sortperm(m[:,1]),:]
5×2 Array{Float64,2}:
 0.00444418  0.0311171 
 0.459852    6.90901   
 3.26441     9.72657   
 3.38447     1.7144e16 
 5.52777     7.51186e15

sortperm(m[:,1]) renvoie les indices triés de la première colonne que vous utilisez ensuite pour indexer la matrice.

Une alternative probablement plus rapide serait d'utiliser sortslices(m,dims=1) mais cela devient un peu plus difficile à appeler si, par exemple, vous voulez trier par la deuxième colonne...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X