python - 减少 python 中长循环的时间

标签 python for-loop numpy

我这边的另一个愚蠢问题 ;) 我对以下 len(x)=len(y)=7'700'000 片段有一些问题:

from numpy import *

for k in range(len(x)):
    if x[k] == xmax:
        xind = -1
    else:
        xind = int(floor((x[k]-xmin)/xdelta))
    if y[k] == ymax:
        yind = -1
    else:
        yind = int(floor((y[k]-ymin)/ydelta))

    arr = append(arr,grid[xind,yind])

arrgrid 外,所有变量都是 float 或整数。 arr 是一维数组,grid 是二维数组。

我的问题是循环运行需要很长时间(几分钟)。谁能解释一下,为什么这需要这么长时间?有人有建议吗?即使我尝试通过 arange() 交换 range(),我也只节省了几秒钟。

谢谢。

第一次编辑 对不起。忘了告诉我我正在导入 numpy

第二次编辑

我在二维网格中有一些点。网格的每个单元格都存储了一个值。我必须找出该点的位置并将该值应用于新数组。这是我的问题,也是我的想法。

p.s.:想看得懂的就看图吧。单元格的值用不同的颜色表示。

idea

最佳答案

怎么样:

import numpy as np
xind = np.floor((x-xmin)/xdelta).astype(int)
yind = np.floor((y-ymin)/ydelta).astype(int)

xind[np.argmax(x)] = -1
yind[np.argmax(y)] = -1

arr = grid[xind,yind]

注意:如果您使用的是 numpy,如果您想高效地做事,请不要将数组视为 python 列表。

关于python - 减少 python 中长循环的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5655052/

相关文章:

python - 不要向客户端发送异常

python - 我可以声明不兼容的 python 依赖项吗?

ios - addSubview 在 "for loop"中并带有计数

java - 制作任何东西的通用参数化类型

python - PyQ 中的 Kdb 数据库到 NumPy 数组

python - 如何在 matplotlib 图表上制作动画

python - subprocess.check_call([PYTHON_PATH, try_str[i]]) 系统找不到指定文件

java - 我应该尽量减少 "if"语句或 "for"循环的数量吗?

python - 将 a[i+j] 数组映射到 A[i,j] 矩阵

python - 如何在 Kubernetes Python 客户端中指定 ca_bundle