Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:获取将对字符串数组进行排序以匹配另一个字符串数组的索引_Python_Arrays_Numpy - Fatal编程技术网

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]