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

2024-04-20 11:09:20 发布

您现在位置:Python中文网/ 问答频道 /正文

如果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的函数吗?你知道吗


Tags: 函数numpy元素标准顺序数组
2条回答

使用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()

使用标准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]

相关问题 更多 >