使用条件语句加速Python嵌套循环

克里斯教堂

我正在将代码从MATLAB转换为python,以加快简单的操作。我写了一个包含嵌套循环和条件语句的函数。循环的目的是返回与数组y比较时数组x中最接近元素的索引列表。我正在按1e5项的顺序进行比较,这需要大约30秒才能运行。任何有助于加快此过程的帮助将不胜感激!我使用numba-pro自动即时编译器获得了部分成功:

@autojit()
def find_nearest(x,y,idx):
    idx_old = 0
    rng1 = range(y.shape[0])
    rng2 = range(x.shape[0])
    for i in rng1:
        prev = abs(x[idx_old]-y[i])
        for j in rng2:
            if abs(x[j]-y[i]) < prev:
                prev = abs(x[j]-y[i])
                idx_old = j
        idx[i] = idx_old
    return idx

很抱歉成为这样的菜鸟,我是python的新手!

用户名

您的Numba代码没什么错,除了算法效率不高。更好的方法是对x数组进行排序并执行二进制搜索,该答案以及以下答案非常相似

def find_nearest(x, y):
    indices = np.argsort(x)

    loc = np.searchsorted(x[indices], y)
    right = indices.take(loc, mode='clip')
    left = indices.take(loc-1, mode='clip')

    return np.where(abs(y-x[left]) < abs(y-x[right]), left, right)

在我的电脑,这是约80倍,甚至比对KDTree方法快xy有10个6和10 5分别元素。大约有三分之二的时间都花在argsort了阵列上,所以我认为在这里使用Numba不会带来太多收益。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用索引搜索 PYTHON 加速嵌套 for 循环

来自分类Dev

使用if语句的条件循环

来自分类Dev

python,循环嵌套,函数,if语句

来自分类Dev

python,循环嵌套,函数,if语句

来自分类Dev

我可以在Python中具有多个条件的if-else语句中使用嵌套的for循环吗?

来自分类Dev

嵌套for ...使用If语句的每个循环

来自分类Dev

嵌套循环和条件语句 (Matlab)

来自分类Dev

python使用文件的嵌套循环,如果条件不起作用

来自分类Dev

如何加速具有多个嵌套 for 循环的 python 2 程序

来自分类Dev

加速C ++中的嵌套循环

来自分类Dev

Python:在“ while”循环中嵌套“ If”语句吗?

来自分类Dev

使用多个条件压缩嵌套的 if 语句

来自分类Dev

加速Python中的循环

来自分类Dev

在FOR循环语句的条件部分中使用声明

来自分类Dev

使用for循环和条件语句定义方法

来自分类Dev

使用for循环在查询中生成嵌套条件

来自分类Dev

Python –使用`while`,`try`,`if`和`except`语句突破了一个深层嵌套的循环

来自分类Dev

在使用python的嵌套for循环中使用“和”逻辑时,如何使用多个if else条件

来自分类Dev

如何在TOSCA中使用循环语句和条件语句?

来自分类Dev

在Python中使用条件'with'语句

来自分类Dev

如何将 for 循环转换为嵌套的 while 循环,并在 Python 中使用有效的 if 语句

来自分类Dev

通过元素幂运算加速嵌套循环

来自分类Dev

Python使用for循环条件语句对字符串列表进行分区

来自分类Dev

jQuery循环条件语句

来自分类Dev

for循环中的条件语句

来自分类Dev

带for循环的条件语句

来自分类Dev

if语句或while循环条件?

来自分类Dev

使用bsxfun加速嵌套嵌套的Matlab

来自分类Dev

如何在Python 3的while循环中嵌套if语句

Related 相关文章

  1. 1

    如何使用索引搜索 PYTHON 加速嵌套 for 循环

  2. 2

    使用if语句的条件循环

  3. 3

    python,循环嵌套,函数,if语句

  4. 4

    python,循环嵌套,函数,if语句

  5. 5

    我可以在Python中具有多个条件的if-else语句中使用嵌套的for循环吗?

  6. 6

    嵌套for ...使用If语句的每个循环

  7. 7

    嵌套循环和条件语句 (Matlab)

  8. 8

    python使用文件的嵌套循环,如果条件不起作用

  9. 9

    如何加速具有多个嵌套 for 循环的 python 2 程序

  10. 10

    加速C ++中的嵌套循环

  11. 11

    Python:在“ while”循环中嵌套“ If”语句吗?

  12. 12

    使用多个条件压缩嵌套的 if 语句

  13. 13

    加速Python中的循环

  14. 14

    在FOR循环语句的条件部分中使用声明

  15. 15

    使用for循环和条件语句定义方法

  16. 16

    使用for循环在查询中生成嵌套条件

  17. 17

    Python –使用`while`,`try`,`if`和`except`语句突破了一个深层嵌套的循环

  18. 18

    在使用python的嵌套for循环中使用“和”逻辑时,如何使用多个if else条件

  19. 19

    如何在TOSCA中使用循环语句和条件语句?

  20. 20

    在Python中使用条件'with'语句

  21. 21

    如何将 for 循环转换为嵌套的 while 循环,并在 Python 中使用有效的 if 语句

  22. 22

    通过元素幂运算加速嵌套循环

  23. 23

    Python使用for循环条件语句对字符串列表进行分区

  24. 24

    jQuery循环条件语句

  25. 25

    for循环中的条件语句

  26. 26

    带for循环的条件语句

  27. 27

    if语句或while循环条件?

  28. 28

    使用bsxfun加速嵌套嵌套的Matlab

  29. 29

    如何在Python 3的while循环中嵌套if语句

热门标签

归档