您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – 找到一个数组的哪些元素接近另一个数组中的任何元素的最有效方法是什么?

5b51 2022/1/14 8:22:15 python 字数 1591 阅读 524 来源 www.jb51.cc/python

我有两个1维numpy.ndarray对象,并想知道第一个数组中的哪些元素在第二个数组中的任何元素的dx内. 我现在拥有的是什么 # setup numpy.random.seed(1) a = numpy.random.random(1000) # create one array numpy.random.seed(2) b = numpy.random.random(1000) # cr

概述

我现在拥有的是什么

# setup
numpy.random.seed(1)
a = numpy.random.random(1000)  # create one array
numpy.random.seed(2)
b = numpy.random.random(1000)  # create second array
dx = 1e-4  # close-ness parameter

# function I want to optimise
def find_all_close(a,b):
    # compare one number to all elements of b
    def _is_coincident(t):
        return (numpy.abs(b - t) <= dx).any()
    # vectorize and loop over a
    is_coincident = numpy.vectorize(_is_coincident)
    return is_coincident(a).nonzero()[0]

返回timeit结果如下

10 loops,best of 3: 16.5 msec per loop

优化find_all_close函数的最佳方法是什么,特别是如果a和b保证是浮点数组,当它们传递给find_all_close时可能会以升序排序,可能是cython或类似的?

在实践中,我正在使用10,000到100,000个元素(或更大)的数组,并在几百个不同的b数组上运行整个操作.

left = np.searchsorted(b,a - dx,'left')
right = np.searchsorted(b,a + dx,'right')
a[left != right]

线性算法有两个指向第二个数组的指针,它们在迭代第一个数组中的元素时跟踪移动窗口.

总结

以上是编程之家为你收集整理的python – 找到一个数组的哪些元素接近另一个数组中的任何元素的最有效方法是什么?全部内容,希望文章能够帮你解决python – 找到一个数组的哪些元素接近另一个数组中的任何元素的最有效方法是什么?所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶