【问题标题】:Numpy get reverse index orderNumpy 获取反向索引顺序
【发布时间】:2020-10-30 06:22:02
【问题描述】:

我有一个 numpy 数组,我用已知的顺序排列它,我怎样才能得到相反的顺序,以便我可以从输出中恢复输入?

In [1]: import numpy as np                                                      

In [2]: a = np.arange(9)                                                        

In [3]: order = np.random.permutation(9)                                        

In [4]: b = a[order]                                                            

In [5]: order                                                                   
Out[5]: array([0, 4, 5, 2, 1, 7, 6, 8, 3])

In [6]: b                                                                       
Out[6]: array([0, 4, 5, 2, 1, 7, 6, 8, 3])

In [7]: a                                                                       
Out[7]: array([0, 1, 2, 3, 4, 5, 6, 7, 8])

In [8]: inv_order = [0, 4, 3, 8, 1, 2, 6, 5, 7]                                 

In [9]: b[inv_order]                                                            
Out[9]: array([0, 1, 2, 3, 4, 5, 6, 7, 8])

这里我手动创建了inv_order,这样b[inv_order]就和输入a一样。 给定输入、输出和排列顺序,我如何计算这个反向/逆序? 请注意,输入数组不保证已排序。

谢谢!

【问题讨论】:

    标签: numpy indexing permutation


    【解决方案1】:

    也许np.argsort(order) 应该可以解决问题。

    【讨论】:

    • 不,这仅在输入数组已排序时才有效,但不保证输入已排序。
    • inv_order = np.argsort(order), check this
    • 谢谢!有用!您可以修改主要答案,以便我接受吗?
    • 很好,谢谢,编辑答案是正确的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    • 1970-01-01
    • 2013-12-08
    • 2017-03-29
    相关资源
    最近更新 更多