【问题标题】:Specify Order numpy array指定顺序 numpy 数组
【发布时间】:2012-03-14 18:35:05
【问题描述】:

我试图将一个数组按另一个数组的顺序排列。例如,如果我有:

arr1 = np.array(['a', 'b', 'c'])
index = np.array([2, 1, 0])

我想要的结果 arr2 是 ['c', 'b', 'a'],这样:

arr2[index[i]] == arr1[i]

【问题讨论】:

    标签: python arrays sorting numpy


    【解决方案1】:

    您可以简单地将选择器数组作为索引传递给字符数组:

    >>> import numpy as np
    >>> arr1 = np.array(['a', 'b', 'c'])
    >>> index = np.array([2, 1, 0])
    >>> arr1[index]
    array(['c', 'b', 'a'], 
          dtype='|S1')
    

    【讨论】:

    • 也许我的代码中有错误,但是当我运行它时,我得到以下关系,而不是所需的关系:arr2[i] == arr1[index[i]]
    • 我认为问题可能出在代码的前几行——谢谢!
    【解决方案2】:

    试试这个:

    [arr1[i] for i in index]
    

    【讨论】:

    • 不返回数组,对 numpy 数组效率低下。一般规则:不要将 numpy 数组视为 python 列表。使用 numpy 内置函数几乎总是有更好的方法。
    猜你喜欢
    • 2012-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-27
    • 2015-07-17
    • 2020-03-22
    • 1970-01-01
    相关资源
    最近更新 更多