减少在Python中进行长for循环的时间
|
我这边还有一个愚蠢的问题;)以下代码段的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])
除arr
和grid
外,所有变量均为浮点数或整数。 arr
是一维数组,grid
是2D数组。
我的问题是循环需要很长时间(几分钟)。谁能解释我,为什么要花这么长时间?有任何建议吗?即使我尝试将ѭ5兑换成ѭ6,也只能节省一秒钟。
谢谢。
第一次编辑
抱歉。忘了告诉我我要汇入numpy
第二次编辑
我在2D网格中有一些要点。网格的每个单元格都有一个存储的值。我必须找出该点的位置并将该值应用于新数组。那是我的问题和我的想法。
附注:如果您想更好地理解它,请看一下图片。单元格的值用不同的颜色表示。
没有找到相关结果
已邀请:
5 个回复
孝铜差
注意:如果您要使用numpy,则要高效执行操作,请勿将数组像python列表一样对待。
悍蕾驮苇袜
如果您不想生成庞大的额外列表,也可以使用izip。
荆怖赡
浆错
的文档说它返回: 附有
的
副本 至
。注意ѭ11 不能就地发生:新数组是 分配和填充。 这意味着您将在每次迭代中取消分配并分配越来越大的数组。我建议预先分配一个正确大小的数组,然后在每次迭代中填充数据。例如。:
诧不达