【问题标题】:Sorting a numpy array对 numpy 数组进行排序
【发布时间】:2016-11-30 12:24:14
【问题描述】:

我有一个 numpy 数组,我想对行进行排序。

    >>f1
    array([['b', '3'],
           ['v', '7'],
           ['a', '1'],
           ['a', '0'],
           ['a', '5'],
           ['f', '7'],
           ['f', '5'],
           ['a', '2'], dtype=object)

我正在使用 sort() 并且我变得像这样

    >> f1.sort()
    >> print f1
    [['3' 'b']
     ['7' 'v']
     ['1' 'a']
     ['0' 'a']
     ['5' 'a']
     ['7' 'f']
     ['5' 'f']
     ['2' 'a']]

但我需要的是,

    [['a' '0']
     ['a' '1']
     ['a' '2']
     ['a' '5']
     ['b' '3']
     ['f' '5']
     ['f' '7']
     ['v' '7']]

谁能帮帮我

【问题讨论】:

  • 我们如何在 o/p 中有['a' '7']

标签: arrays sorting numpy row multiple-columns


【解决方案1】:

Numpy 排序接受要排序的轴:

from numpy import array

f= array([['b', '3'],
           ['v', '7'],
           ['a', '1'],
           ['a', '0'],
           ['a', '5'],
           ['f', '7'],
           ['f', '5'],
           ['a', '2']])

f.sort(0)
print f

我明白了:

[['a' '0']
 ['a' '1']
 ['a' '2']
 ['a' '3']
 ['b' '5']
 ['f' '5']
 ['f' '7']
 ['v' '7']]

编辑:

我刚刚意识到这可能不是您想要的。 numpy sort 沿轴对所有可能的遍历进行排序(例如,在这种情况下,分别对每一列进行排序)。按第一个索引进行“行”排序:

print array(sorted(f,key=lambda x: list(x)))

NM,显然第一次就做对了 :)

【讨论】:

    猜你喜欢
    • 2015-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    • 1970-01-01
    • 2011-02-19
    相关资源
    最近更新 更多