python - 将值插入排序数组

标签 python algorithm list sorting insert

将值插入已排序的 numpy 数组中正确位置的最快方法是什么?

例如,我想将 b 的每个值插入到 a 中:

a = [1,1,2,4,7,7,11,13,13,13,15,20,25,26,27,30,45,70]

b = [5,7,9,45]

我试过为 b 的每个值遍历 a 并以这种方式插入它。我还尝试了 bisect_left 方法:

for i in b:
a.insert(bisect_left(a,i),i)

这两种方法都太慢了,因为我要处理数十万个数据元素。

有什么想法吗?

最佳答案

您可以使用searchsortedinsert:

a = numpy.array([1,1,2,4,7,7,11,13,13,13,15,20,25,26,27,30,45,70])
b = numpy.array([5,7,9,45])
ii = numpy.searchsorted(a, b)
a = numpy.insert(a, ii, b)

关于python - 将值插入排序数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19860256/

相关文章:

javascript - 在 Selenium Python 中禁用图像

python - 将字典中的值转换为键

python - 在数据透视表中使用多个列进行索引

python - 根据现有字典将字典条目的数据帧转换为所有条目的数据帧

java - 一种操作插入程序的优化算法

Python:在列表中查找异常值

algorithm - 未排序数组中的前 5 个元素

c++ - 算法能否安全地解决输入到输出的 self 分配问题?

c - 我们如何在C语言中将list(Python中的)函数实现为数组?

python - 在 python 中,如果两个列表都包含公共(public)元素,则从两个元组列表中选取元组