簡體   English   中英

根據帶有浮點數的一列對 2d numpy 數組進行排序

[英]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]]

在我的例子中dtypefloat64 請通過執行print(your_array.dtype) dtype數組的 dtype 是否實際上是一些浮點數。 注意numpy.argsort有可選參數kind ,默認是quicksort ,你可以嘗試不同的版本,看看會發生什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM