2016-11-04 57 views
-1

我有一個N = 250000行和M = 10列的矩陣。 我想矩陣排序爲減少第一列的值,所以 我寫:如何通過減少Python和numpy中第一列的值來對矩陣的行進行排序?

matrix=np.loadtxt("matrix.dat") 

np.sort(matrix) 

matrix=matrix[::-1] 

np.sort不起作用。事實上,一旦在排序後打印這些值,我就會找到相同的輸入矩陣。 任何人都知道如何解決這個問題? 非常感謝您

+0

「我要爲減小第一列的值矩陣排序」:所以你只需要第一列進行排序? – MMF

+1

sorted_matrix = np.sort(matrix) –

回答

0

這將排序矩陣減少第一列的值

import numpy as np 

# Generate a matrix of data 
matrix = np.random.rand(5,4) 

# Find the ordering of the first column (in increasing order) 
ind = np.argsort(matrix[:,0]) 

# Switch the ordering (so it's decreasing order) 
rind = ind[::-1] 

# Return the matrix with rows in the specified order 
matrix = matrix[rind] 
1

np.sort()不排序的就地矩陣,你要排序的矩陣分配給您一個變量,或者使用array.sort(axis=0)方法進行就地分揀。然後按照降序順序顛倒結果。

演示:

In [33]: arr = np.random.rand(5, 4) 

In [34]: arr 
Out[34]: 
array([[ 0.80270779, 0.14277011, 0.01316072, 0.67149683], 
     [ 0.16252499, 0.9969757 , 0.14759736, 0.24212889], 
     [ 0.49493771, 0.51692399, 0.17731137, 0.40797518], 
     [ 0.20700147, 0.13279386, 0.2464658 , 0.9730963 ], 
     [ 0.26145694, 0.23410809, 0.78049016, 0.45821089]]) 

In [35]: arr.sort(0) # or arr.sort(axis=0, kind='mergesort') 

In [36]: arr 
Out[36]: 
array([[ 0.16252499, 0.13279386, 0.01316072, 0.24212889], 
     [ 0.20700147, 0.14277011, 0.14759736, 0.40797518], 
     [ 0.26145694, 0.23410809, 0.17731137, 0.45821089], 
     [ 0.49493771, 0.51692399, 0.2464658 , 0.67149683], 
     [ 0.80270779, 0.9969757 , 0.78049016, 0.9730963 ]]) 

In [37]: arr[::-1] 
Out[37]: 
array([[ 0.80270779, 0.9969757 , 0.78049016, 0.9730963 ], 
     [ 0.49493771, 0.51692399, 0.2464658 , 0.67149683], 
     [ 0.26145694, 0.23410809, 0.17731137, 0.45821089], 
     [ 0.20700147, 0.14277011, 0.14759736, 0.40797518], 
     [ 0.16252499, 0.13279386, 0.01316072, 0.24212889]]) 
相關問題