- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我很惊讶地看到 python 的 bisect.bisect_left比 numpy 等价物快 numpy.searchsorted .这是否与我使用的值的分布有关,或者这对任何输入都适用吗?
>>> input_size = 10**3
>>> input_list = sorted([random.uniform(0, 300) for _ in range(input_size)])
>>> numpy_input = np.array(input_list)
>>> %timeit index = bisect.bisect_left(input_list, 100)
434 ns ± 6.17 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
>>> %timeit index = np.searchsorted(numpy_input, 100)
1.8 µs ± 21.8 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
Python 的版本是 3.8.0,numpy 的版本是 1.18.4。
最佳答案
这里的问题是您一次进行一次查找。一次一个标量并不是使用 NumPy 的有效方式。
用一整组元素调用searchsorted
比在循环中一次用一个元素调用bisect_left
更快:
In [1]: import numpy
In [2]: import bisect
In [3]: numpy_haystack = numpy.arange(300)
In [4]: list_haystack = numpy_haystack.tolist()
In [5]: numpy_needles = numpy.arange(5, 150, 3)
In [6]: list_needles = numpy_needles.tolist()
In [7]: %timeit numpy.searchsorted(numpy_haystack, numpy_needles)
2.39 µs ± 71.2 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
In [8]: %%timeit
...: for needle in list_needles:
...: bisect.bisect_left(list_haystack, needle)
...:
18.4 µs ± 1.48 µs per loop (mean ± std. dev. of 7 runs, 100000 loops each)
关于python - python bisect 比 numpy.searchsorted 快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62753467/
对于数组 B 中的每个值,如何通过一个函数调用找到数组 A 中最接近的值,类似于 searchsorted(A, B) 在 numpy 中工作。 最佳答案 searchsortedfirst.(Ref
我想要像函数这样的索引:np.searchsorted([1,2,3,4,5], 3) 返回 2 但如果是二维维度:np.searchsorted([[1,2],[3,4],[5,6]], [5,6]
searchsorted() 函数对于在 numpy 中组织数据非常有用,并且它特别适合大型数组。 为什么这么快?是不是就是这样(类似于矢量化代码),我们可以让代码直接在“C”中运行。但是我是否可以在
我有一个三维数组,其气压值的形式为: [[[1000 1010] [1005 990]] [[950 960] [955 940]] [[900 910] [905 890]]] 该结构表示不同
假设我在表单中有两个数组 a = [0, 0, 1, 1, 2, 3, 3, 3, 4, 4, 5, 6] b = [1, 2, 1, 2, 1, 4, 7, 9, 4, 8, 1, 1] 如您所见,
我有一个 numpy 数组,其中每一行中的值将始终排序并单调递增: a = np.array([[1, 2, 3, 4, 8], [2, 5, 6, 7, 8], [5,
如果我误用了任何条款,请提前道歉,请随时更正。 我有一个排序数组 dtype '
带有代码 tf.searchsorted(input, input2) 我遇到了第一个错误 InvalidArgumentError (see above for traceback): Reshap
我有两个列表,每个列表都填充了时间戳,list_a 和 list_b。使用 np.searchsorted 为 list_b 中的每个条目查找 list_a 中的最新条目的最佳方法是什么?结果将是一个
我正在处理两个数据帧 df1 和 df2。我使用了代码: df1.index.searchsorted(df2.index) 但我不确定它是如何工作的。有人可以向我解释一下吗? 最佳答案 该方法应用
假设我有一个已经排序的 numpy 数组。 >>> x array([[1, 2, 3, 1], [2, 2, 3, 2], [2, 3, 3, 4], [3
我有一个用于查找的二维数组 (a) 和一个用于查找应插入元素的索引的数组 (v): import numpy as np # [EDIT] Add more records which contain
这在 numpy.searchsorted 中是一种有趣的行为。以下测试失败: import numpy as np a = np.ma.masked_array([1, 2, 3, 4, 5, 6,
我正在尝试使用名为 searchsorted 的 numpy 方法,但我无法使其工作。 这是代码: class Object(QMainWindow): def __init__(self):
在他的视频 [使用 Pandas 在 Python 中进行数据分析] ( http://youtu.be/w26x-z-BdWQ?t=2h14s ),Wes McKinney 展示了一个名为 sear
我有一个很大(数百万)个 ID 号数组 ids,我想找到 中存在另一个目标数组 (targets) 的索引>ids 数组。例如,如果 ids = [22, 5, 4, 0, 100] targets
有没有什么好的方法可以找到接近多个目标的排序数组A中的所有值索引?使用 numpy.searchsorted() 可以让我们高效地找到接近多个目标的索引: Finding the nearest va
我很惊讶地看到 python 的 bisect.bisect_left比 numpy 等价物快 numpy.searchsorted .这是否与我使用的值的分布有关,或者这对任何输入都适用吗? >>>
我正在通过“Python 数据分析”一书学习数据科学。在书中,作者使用了 numpy 中的 .searchsorted(),但它似乎无法使用作者给我们的特定代码。 我有一个dataframe,我想在列
我愿意: index = numpy.searchsorted(array([ 1., 2., 3., nan, 4., 5.]), 4.2, side='left') 给我: i
我是一名优秀的程序员,十分优秀!