给定重排A和B,计算P使得A [P] == B.

时间:2014-09-29 21:37:58

标签: python numpy

如果AB是两个对应于相同(不同)元素的两个排序的数组,则有一个唯一的索引数组P,使A[P]相等到B。例如,如果AB

A = ['b', 'c', 'e', 'd', 'a']
B = ['a', 'd', 'c', 'b', 'e']

然后所需的P

P = [4, 3, 1, 0, 2]

numpy(或标准Python)是否具有计算此类P的功能?

2 个答案:

答案 0 :(得分:4)

使用标准python

>>> A = ['b', 'c', 'e', 'd', 'a']
>>> B = ['a', 'd', 'c', 'b', 'e']
>>> P = [ A.index(i) for i in B ]
>>> P
[4, 3, 1, 0, 2]

答案 1 :(得分:3)

使用Numpy

import numpy as np

A = np.array(['b', 'c', 'e', 'd', 'a'])
B = np.array(['a', 'd', 'c', 'b', 'e'])

P = np.empty(len(A), int)
P[B.argsort()] = A.argsort()