首页 > 解决方案 > 是否可以像字典字符匹配那样对 Numpy 2D 数组进行排序

问题描述

我想对它们进行排序,如下所示:

  1. 首先它会检查'0th' col & 如果所有的值都不同,那么它将通过上下交换行来排序。
  2. 如果'0th'列包含相同的值,那么它将把它们放置在连续的行中&排序取决于第一个col的值。如果进一步匹配,则过程继续 f
  3. 由于行索引 2 和 3 在 0、1、2 列中具有相同的值。因此,通过检查第 3 列,它决定了这两行的行位置。请帮忙。提前致谢。注意:当我们将字典中的单词与搜索进行比较时,我也想这样比较。

输入数组:

[23.339,    0.015,  0.008,  0.0071,     0.079,  0.001]
[20.759,    0.024,  0.020,  0.0161,     0.1282, 0.030]
[17.352,    0.063,  0.024,  0.0187,     0.1484, 0.039]
[17.352,    0.063,  0.024,  0.008,  0.128,  0.035]
[23.339,    0.015,  0.001,  0.204,  1.819,  0.762]
[17.352,    1.645,  1.045,  0.779,  1.106,  0.821]
[14.556,    0.061,  0.058,  0.0071,     0.1016, 0.005]

输出数组:

[14.556,    0.061,  0.058,  0.0071,     0.1016, 0.005]
[**17.352,  0.063,  0.024,**    0.008,  0.128,  0.035]
[**17.352,  0.063,  0.024,**    0.0187,     0.1484, 0.039]
[17.352,    1.645,  1.045,  0.779,  1.106,  0.821]
[20.759,    0.024,  0.020,  0.0161, 0.1282, 0.030]
[**23.339,  0.015,**    0.001,  0.204,  1.819,  0.762]
[**23.339,  0.015,**    0.008,  0.0071, 0.079,  0.001]

标签: pythonarrayssorting

解决方案


是的,你可以这样做:

import pandas as pd


x =[[23.339, 0.015, 0.008, 0.0071, 0.079, 0.001],
    [20.759, 0.024, 0.020, 0.0161, 0.1282, 0.030],
    [17.352, 0.063, 0.024, 0.0187, 0.1484, 0.039],
    [17.352, 0.063, 0.024, 0.008, 0.128, 0.035],
    [23.339, 0.015, 0.001, 0.204, 1.819, 0.762],
    [17.352, 1.645, 1.045, 0.779, 1.106, 0.821],
    [14.556, 0.061, 0.058, 0.0071, 0.1016, 0.005]]

df = pd.DataFrame(x)
df.sort_values(by=list(df.keys()), inplace=True)
print(df)
#        0      1      2       3       4      5
#6  14.556  0.061  0.058  0.0071  0.1016  0.005
#3  17.352  0.063  0.024  0.0080  0.1280  0.035
#2  17.352  0.063  0.024  0.0187  0.1484  0.039
#5  17.352  1.645  1.045  0.7790  1.1060  0.821
#1  20.759  0.024  0.020  0.0161  0.1282  0.030
#4  23.339  0.015  0.001  0.2040  1.8190  0.762
#0  23.339  0.015  0.008  0.0071  0.0790  0.001

推荐阅读