Numpy获取反向索引顺序

Numpy获取反向索引顺序,numpy,indexing,permutation,Numpy,Indexing,Permutation,我有一个numpy数组,我用已知的顺序排列它,我怎样才能得到相反的顺序,这样我就可以从输出中恢复输入 In [1]: import numpy as np In [2]: a = np.arange(9) In [3]: order = np.random.permutati

我有一个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\u order
,这样
b[inv\u order]
与输入
a
相同。 在给定输入、输出和置换顺序的情况下,如何计算该逆/逆顺序? 请注意,输入数组不能保证被排序


谢谢

也许应该这样做。

不,只有在对输入数组进行排序的情况下,这才有效,但不能保证输入已排序。
inv\u order=np.argsort(order)
,谢谢!它起作用了!你能修改主要答案吗,这样我就可以接受了?很好,谢谢,把答案编辑成正确的。