如何在numpy中反转排列数组

给定一个自索引(不确定这是否是正确的术语)的numpy数组,例如:

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

这表示此排列(=>是箭头):

0 => 3

1 => 2

2 => 0

3 => 1

我正在尝试制作一个表示逆变换的数组,而没有在python中“手动”进行,也就是说,我想要一个 纯粹的 numpy解决方案。在上述情况下,我想要的结果是:

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

相当于

0 <= 3                0 => 2

1 <= 2 or 1 => 3

2 <= 0 2 => 1

3 <= 1 3 => 0

看起来很简单,但我只是想不出该怎么做。我曾尝试使用Google搜索,但没有找到任何相关内容。

回答:

的置换的逆pnp.arange(n)是索引的阵列s之类p的,即

p[s] == np.arange(n)

一定是真的。这样的s正是np.argsort回报:

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

>>> np.argsort(p)

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

>>> p[np.argsort(p)]

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

以上是 如何在numpy中反转排列数组 的全部内容, 来源链接: utcz.com/qa/420245.html

回到顶部