在已排序的 numpy 数组中将值插入正确位置的最快方法是什么?
例如,我想插入binto 的每个值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]
Run Code Online (Sandbox Code Playgroud)
我试过遍历a每个值b并以这种方式插入。我也试过bisect_left方法:
for i in b:
a.insert(bisect_left(a,i),i)
Run Code Online (Sandbox Code Playgroud)
这两种方法都太慢了,因为我要处理数十万个数据元素。
有任何想法吗?
你好,我有一个与Python相关的问题,
我有一个排序的 Numpy 数组,我必须快速找到某些值的索引,到目前为止我一直在使用二分搜索,但我遇到的问题是有许多相同值的条目,我必须找到索引所有的值。有没有办法修改二分搜索来找到所有?
当前代码是
def binarySearch(alist,item,con_array,element):
if len(alist) == 0:
return False
else:
midpoint = len(alist)//2
if alist[midpoint]==item:
for l in range(len(alist)):
if alist[l] == item:
n_array.append(con_array[l])
return True
else:
if item<alist[midpoint]:
return binarySearch(alist[:midpoint],item,con_array[:midpoint],i)
else:
return binarySearch(alist[midpoint+1:],item,con_array[midpoint+1:],i)
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我尝试通过简单地搜索缩短的数组来合并它,但这仍然删除了一些值