我这边还有一个愚蠢的问题;)我对以下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
是1D数组,grid
是2D数组。在
我的问题是运行循环需要很长时间(几分钟)。有谁能解释一下,为什么要花这么长时间?有什么建议吗?即使我试图通过range()
与arange()
进行交换,我也只节省了一些时间。在
谢谢。在
第一次编辑
对不起的。忘记告诉我正在导入numpy
第二次编辑
我在二维网格中有一些点。网格的每个单元格都存储了一个值。我必须找出该点的位置,并将该值应用于新数组。这是我的问题和想法。在
附言:如果你想更好地理解它,请看这幅画。单元格的值用不同的颜色表示。在
比如说:
注意:如果您使用的是numpy,如果您想高效地执行任务,请不要像python列表那样对待数组。在
除了数据的大小,我看不出明显的问题。你的电脑能把所有的东西都记在记忆里吗?如果不是,那么您可能是在交换内存中“跳跃”,这将始终是缓慢的。如果完整的数据在内存中,请尝试psyco。这可能会大大加快你的计算速度。在
如果你不想生成一个巨大的额外列表,还有izip。在
相关问题 更多 >
编程相关推荐