如何在numpy中反转排列数组
给定一个自索引(不确定这是否是正确的术语)的numpy数组,例如:
a = np.array([3, 2, 0, 1])
这表示此排列(=>
是箭头):
0 => 31 => 2
2 => 0
3 => 1
我正在尝试制作一个表示逆变换的数组,而没有在python中“手动”进行,也就是说,我想要一个 纯粹的 numpy解决方案。在上述情况下,我想要的结果是:
array([2, 3, 1, 0])
相当于
0 <= 3 0 => 21 <= 2 or 1 => 3
2 <= 0 2 => 1
3 <= 1 3 => 0
看起来很简单,但我只是想不出该怎么做。我曾尝试使用Google搜索,但没有找到任何相关内容。
回答:
的置换的逆p
的np.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