如果A
和B
是两个对应于相同(不同)元素的两个排序的数组,则有一个唯一的索引数组P
,使A[P]
相等到B
。例如,如果A
和B
是
A = ['b', 'c', 'e', 'd', 'a']
B = ['a', 'd', 'c', 'b', 'e']
然后所需的P
是
P = [4, 3, 1, 0, 2]
numpy(或标准Python)是否具有计算此类P
的功能?
答案 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()