【发布时间】: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