我的问题是如何获取将对另一个数组进行排序的字符串数组的索引。
我有两个字符串数组:
A = np.array([ 'a', 'b', 'c', 'd' ])
B = np.array([ 'd', 'b', 'a', 'c' ])
我想获得将第二个排序的索引以匹配第一个。 我已经尝试了np.argsort函数给出第二个数组(在列表中转换)作为顺序,但它似乎没有工作。 任何帮助都会得到很大的帮助。 谢谢和最好的问候, Bradipo
编辑:
def sortedIndxs(arr): ???
这样
sortedIndxs([ 'd', 'b', 'a', 'c' ]) = [2,1,3,0]
答案 0 :(得分:1)
通过numpy.searchsorted
和numpy.argsort
:
import numpy as np
A = np.array(['a', 'b', 'c', 'd'])
B = np.array(['d', 'b', 'a', 'c'])
xsorted = np.argsort(B)
res = xsorted[np.searchsorted(B[xsorted], A)]
print(res)
[2 1 3 0]
答案 1 :(得分:0)
获取从任意排列到任意排列的转换规则的代码。
A = [ 'a', 'b', 'c', 'd' ]
B = [ 'd', 'b', 'a', 'c' ]
indexTable = {k: v for v, k in enumerate(B)}
// {'d': 0, 'b': 1, 'a': 2, 'c': 3}
result = [indexTable[k] for k in A]
// [2, 1, 3, 0]