[英]Sort 2d numpy array based on one column with float numbers
我有一個如下所示的數組。 我想使用 numpy 根據最后一列中的值對行進行排序。我仍然希望其他列中的對象跟隨。 試過 argsort 但它抱怨浮點值。 關於如何解決這個問題的任何想法?
array([[ 1. , 9.78451265, 18.31697539, 19.41765432],
[ 1. , 9.49327265, 16.33220702, 17.52747136],
[ 1. , 9.59539133, 19.12802603, 20.06255417],
[ 1. , 10.71154356, 20.97159265, 22.20762462],
[ 1. , 9.80546193, 20.42898466, 21.33123542],
[ 1. , 7.15263928, 19.34313597, 19.34749615],
[ 1. , 10.04666903, 17.44804702, 18.77179989],
[ 1. , 8.17590068, 21.42497094, 21.64885651],
[ 1. , 9.48726923, 21.25501335, 21.96131382],
[ 1. , 10.33621213, 21.96221091, 22.94731233],
[ 2. , 30.81113115, 41.62138476, 50.3865105 ],
[ 2. , 30.9706931 , 39.05822859, 48.44245254],
[ 2. , 31.5019972 , 40.58579837, 49.97406593],
[ 2. , 29.715156 , 40.25178835, 48.63397036],
[ 2. , 31.72687542, 40.42059829, 49.9812409 ],
[ 2. , 27.70096179, 39.21068387, 46.61542365],
[ 2. , 35.11019075, 37.99593126, 50.32100995],
[ 2. , 30.66515427, 38.941767 , 48.16221612],
[ 2. , 32.8454404 , 44.25996075, 53.71737408],
[ 2. , 28.68922489, 38.77826805, 46.83898709]])
關於如何解決這個問題的任何想法?
我使用numpy.argsort
沒有問題如下:
import numpy as np
arr = np.array([[1.0,1.0,5.3],[1.0,2.0,4.7],[1.0,3.0,3.5]])
sorted_arr = arr[np.argsort(arr[:, -1])]
print(sorted_arr)
output
[[1. 3. 3.5]
[1. 2. 4.7]
[1. 1. 5.3]]
在我的例子中dtype
是float64
。 請通過執行print(your_array.dtype)
dtype
數組的 dtype 是否實際上是一些浮點數。 注意numpy.argsort
有可選參數kind
,默認是quicksort ,你可以嘗試不同的版本,看看會發生什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.