我有一个numpy阵列:
a = np.array(["dcba", "abc", "bca", "bcda", "tda", "a"])
现在我有一个向量化的Levenshtein edit distance函数,它测量给定数组中给定字符串的距离,例如,对于string ab
:
退货:
array([3, 1, 3, 4, 3, 1])
我想对数组进行排序,这样任何编辑距离小于2的元素都会移动到第一个位置,而其余元素则在不改变顺序的情况下移到后面。所以结果是:
array(["abc", "a", "dcba", "bca", "bcda", "tda"])
我已经做过了,但是很难看,我想还有一种更有效的方法。在
假设这些距离值存储在数组
dists
中,这里有一种方法-样本运行-
^{pr2}$上面的方法连接了
a
的两个索引部分,从运行时来看,这可能不是很有效。因此,考虑到性能,您可以创建一个串联索引数组,然后用它在one-go
中索引到a
。因此,前一个实现的最后一行必须更改,如-如果您想保留顺序,只想将小于2的
l_dist
元素放在前面,我可以给出一个答案:我认为您应该从创建索引数组开始
这可以很容易地用作掩码索引,例如
^{pr2}$所以您可以通过组合这两个来重建
sorted
数组。在我想让你的问题保持原样,但我不想让这个问题继续下去。在
我不知道这是否真的有效,但它有效。在
在字典中添加元素和编辑距离
然后根据编辑距离对字典进行排序
^{pr2}$相关问题 更多 >
编程相关推荐