2017-03-28 27 views
0

Über Jahr zuvor schrieb ich die gleiche Funktion in R. Nun möchte ich das gleiche in Python tun: Sort matrix column in R I matrix:Spalte sortieren Durchschnitt in Python

7 3 2 
3 1 6 
4 3 1 

Als nächstes ich alle Spalte aufsteigend sortiert:

3 1 1 
4 3 2 
7 3 6 

Jetzt möchte ich sortieren Spalten im Durchschnitt aufsteigend. Die Ausgabe würde wie folgt aussehen:

1 1 3 
3 2 4 
3 6 7 

Mein gesamten Code:

import numpy as np 
a = np.matrix([[7,3,2],[3,1,6],[4,3,1]]) 
a.sort(axis=0) 
b = a.mean(0) 
print(a) 

Antwort

1

Der Trick ist a in eine array eher als ein matrix einzuschalten.

import numpy as np 
a = np.matrix([[7,3,2],[3,1,6],[4,3,1]]) 
a.sort(axis=0) 
print(a[:,np.argsort(np.array(a).mean(0))]) 
:

würde
>>> a[:,a.A.mean(0).argsort()] 
matrix([[1, 1, 3], 
     [3, 2, 4], 
     [3, 6, 7]]) 

Der Code dann:

>>> a[:,np.argsort(np.array(a).mean(0))] 
matrix([[1, 1, 3], 
     [3, 2, 4], 
     [3, 6, 7]]) 

Dies kann auch geschrieben werden als

Verwandte Themen