Python:获取将对字符串数组进行排序以匹配另一个字符串数组的索引
我的问题是如何获得字符串数组的索引,以便对另一个数组进行排序 我有两个字符串数组:Python:获取将对字符串数组进行排序以匹配另一个字符串数组的索引,python,arrays,numpy,Python,Arrays,Numpy,我的问题是如何获得字符串数组的索引,以便对另一个数组进行排序 我有两个字符串数组: A = np.array([ 'a', 'b', 'c', 'd' ]) B = np.array([ 'd', 'b', 'a', 'c' ]) 我想得到对第二个进行排序以匹配第一个的索引。 我已经尝试了np.argsort函数,将第二个数组(在列表中转换)作为顺序,但它似乎不起作用。 任何帮助都将不胜感激。 谢谢并致以最良好的祝愿, 布拉迪波 编辑: def sortedIndxs(arr): ??
A = np.array([ 'a', 'b', 'c', 'd' ])
B = np.array([ 'd', 'b', 'a', 'c' ])
我想得到对第二个进行排序以匹配第一个的索引。
我已经尝试了np.argsort函数,将第二个数组(在列表中转换)作为顺序,但它似乎不起作用。
任何帮助都将不胜感激。
谢谢并致以最良好的祝愿,
布拉迪波
编辑:
def sortedIndxs(arr):
???
以致
sortedIndxs([ 'd', 'b', 'a', 'c' ]) = [2,1,3,0]
一种代码,用于获得从任意排列到任意排列的转换规则
- 创建可索引:O(n)
- 检查可索引:O(n)
- 总数:0(n)
矢量化方法可通过以下方式实现: 更广泛但适用:值得一读
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]
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]