【问题标题】:Sort multi-dimension numpy array along a dimension [duplicate]沿维度对多维numpy数组进行排序[重复]
【发布时间】:2016-07-06 16:17:53
【问题描述】:

假设我有一个 2D numpy 数组,我想对其进行排序,就好像它是一个标准的 Python 列表一样,即将其行本身按(字典)顺序排列,而不是沿轴的单元格。所以从这里:

>>> a = np.array([[1, 3], [2, 1], [1, 2]]
array([[1, 3],
       [2, 1],
       [1, 2]])

我想达到这个:

array([[1, 2],
       [1, 3],
       [2, 1]])

不幸的是,这并不容易:

>>> np.sort(a, axis=0)
array([[1, 1],
       [1, 2],
       [2, 3]])

>>> sorted(list(a))
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

>>> np.sort(list(a))
array([[1, 1],
       [1, 2],
       [2, 3]])

我知道这可能(应该!)是超级基本的,但对于我的一生,我无法弄清楚如何去做。谢谢!

【问题讨论】:

    标签: python arrays sorting numpy


    【解决方案1】:

    好吧,没关系,Sorting a 2D numpy array by multiple axes 的副本;只需使用lexsort(或该问题下的其他替代方案):

    >>> a[np.lexsort((a[:, 1], a[:, 0]))]
    array([[1, 2],
           [1, 3],
           [2, 1]])
    

    【讨论】:

      猜你喜欢
      • 2012-06-10
      • 2012-07-18
      • 2017-09-03
      • 1970-01-01
      • 1970-01-01
      • 2012-04-23
      • 2019-07-05
      相关资源
      最近更新 更多