我有一個N = 250000
行和M = 10
列的矩陣。 我想矩陣排序爲減少第一列的值,所以 我寫:如何通過減少Python和numpy中第一列的值來對矩陣的行進行排序?
matrix=np.loadtxt("matrix.dat")
np.sort(matrix)
matrix=matrix[::-1]
但np.sort
不起作用。事實上,一旦在排序後打印這些值,我就會找到相同的輸入矩陣。 任何人都知道如何解決這個問題? 非常感謝您
我有一個N = 250000
行和M = 10
列的矩陣。 我想矩陣排序爲減少第一列的值,所以 我寫:如何通過減少Python和numpy中第一列的值來對矩陣的行進行排序?
matrix=np.loadtxt("matrix.dat")
np.sort(matrix)
matrix=matrix[::-1]
但np.sort
不起作用。事實上,一旦在排序後打印這些值,我就會找到相同的輸入矩陣。 任何人都知道如何解決這個問題? 非常感謝您
這將排序矩陣減少第一列的值
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]
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]])
「我要爲減小第一列的值矩陣排序」:所以你只需要第一列進行排序? – MMF
sorted_matrix = np.sort(matrix) –