相关疑难解决方法(0)

numpy.searchsorted的性能在结构化数组上很差

提前抱歉,如果我误用了任何条款,请随时纠正.

我有一个排序数组dtype '<f16, |S30'.当我searchsorted在它的第一个字段上使用时,它的工作速度非常慢(对于300万个项目,大约需要0.4秒).这比bisect在元组的普通Python列表上做同样的事情要长得多.

%timeit a['f0'].searchsorted(400.)
1 loops, best of 3: 398 ms per loop
Run Code Online (Sandbox Code Playgroud)

但是,如果我将float部分复制到另一个单独的数组,则搜索速度快于bisect:

b = a['f0'].copy()

%timeit b.searchsorted(400.)
1000000 loops, best of 3: 945 ns per loop
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 我做错了什么还是在NumPy中回归?
  2. 有没有办法绕过这个而不重复数据?

python arrays numpy binary-search

15
推荐指数
1
解决办法
3247
查看次数

标签 统计

arrays ×1

binary-search ×1

numpy ×1

python ×1