python - 使用条件对数组进行排序的有效方法

标签 python sorting numpy

我有一个 numpy 数组:

a = np.array(["dcba", "abc", "bca", "bcda", "tda", "a"])

现在我有一个矢量化 Levenshtein 编辑距离函数,它测量给定字符串与给定数组的距离,例如,对于字符串 ab:

l_distv("ab", a)

返回:

array([3, 1, 3, 4, 3, 1])

我想以某种方式对数组进行排序,以便编辑距离小于 2 的任何元素移动到第一个位置,而其余元素移动到它们后面而不改变它们的顺序。所以结果是:

array(["abc", "a", "dcba", "bca", "bcda", "tda"])

我已经这样做了,但它很丑陋,我认为有更有效的方法。

最佳答案

在字典中添加元素和编辑距离

dictionary = dict(zip(a,array))

然后根据编辑距离对字典进行排序

sorted_dictionary = sorted(dictionary.items(), key=operator.itemgetter(1))

关于python - 使用条件对数组进行排序的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32951123/

相关文章:

python - 无循环的 n 个矩阵的乘积运算符

以比较函数作为参数调用快速排序函数

c - C 中的堆排序实现有什么问题?

python - 如何从 .csv 文件加载数据而不导入 .csv 模块/库

python - 如何将 pip install 转换为 Poetry 文件?

javascript - 计算数组元素并按计数降序排序

python - Numpy 二维数组,将每行的每个索引剪切到该索引和特定列的最小值

python - 格子 su(2) 规范理论和 python 中的随机数生成

python - 两个 uint8 数组的快速绝对差

python - 使用Python递归函数求一个数的因数