【问题标题】:Python numpy argsortPython numpy argsort
【发布时间】:2013-11-18 14:41:48
【问题描述】:

假设我有以下列表

['foo', '333', 32.3]
['bar', 4.0]
['baz', '555', '2232',  -1.9]

我希望能够通过最后一个元素(浮点数)对其进行排序

['baz', '555', '2232',  -1.9]
['bar', 4.0]
['foo', '333', 32.3]

升序

count_array = np.array([('foo', '333', 32.3),('bar', 4.0),('baz', '555', '2232', -1.9)], dtype = np.object)

idx = np.argsort(count_array[:, 1])

print(count_array[idx])

我希望能够通过比较其最后一个元素来对二维列表进行排序。仅当子列表长度相同时,此代码才有效。

如何让它适用于可变长度子列表?

问题是这一行idx = np.argsort(count_array[:, 1])

【问题讨论】:

    标签: python list sorting numpy


    【解决方案1】:

    我在这里只使用普通的lists,当您创建一个具有不同长度(或array 中的不同数据类型)子列表的numpy.array 时,您会得到一个array 类型为object,它缺少许多有用的numpy 功能,而且实施起来也不是一个好主意。

    x = [['foo', '333', 32.3],
         ['bar', 4.0],
         ['baz', '555', '2232',  -1.9]]
    
    result = sorted(x, key=lambda k : k[-1], reverse=True)
    

    结果:

    >>> result
    [['foo', '333', 32.3], ['bar', 4.0], ['baz', '555', '2232', -1.9]]
    

    【讨论】:

      猜你喜欢
      • 2018-12-21
      • 2018-10-03
      • 1970-01-01
      • 2013-07-27
      • 1970-01-01
      • 2021-05-03
      • 2021-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多