Bonjour,

Un problème qui a déjà du être traité de nombreuses fois, mais je ne trouve pas de reference !

je voudrais trier une matrice suivant une ligne ou une colonne.

j'ai une solution mais quoique compacte, je la trouve un peu compliquée , je voulais savoir s'il n'y avait pas une fonction numpy qui fasse le travail directement, et faire la même chose sans transposer la matrice.


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
25
26
27
28
29
30
31
32
33
34
35
36
37
 
# coding: utf-8
 
import numpy as np
 
l1=np.array([ 3,  4,  5,  8,  9, 2,6,7])
l2=np.array([30, 40, 5, 80, 90, 20,60,7])
l3=np.array([300, 400, 50, 800, 900, 200,60,70])
 
c=np.stack((l1,l2,l3))
 
 
 
print('matrice de base')
print (c)
 
 
# tri
 
c=c.T
print('matrice transposée')
print(c)
 
d=c[c[:,0].argsort()]
 
print('tri sur 1ère colonne')
print(d)
 
e=c[c[:,1].argsort()]
 
print('tri sur 2ème colonne')
print(e)
 
f=c[c[:,2].argsort()]
 
print('tri sur 3ème colonne')
print(f)