假设有一个类似下图中的网格,其中有一些点。 我的目标是计算每个网格单元格中的点数。以下是我的第一次尝试。
for tupel in point_list:
a=0
b=0
for i in self.boxvector:
if tupel[0] < i:
a=self.boxvector.index(i)-1
break
for i in self.boxvector:
if tupel[1] < i:
b=self.boxvector.index(i)-1
break
farray[a][b]+=1
它能运行,但速度很慢。有什么方法可以稍微加快它的速度吗?
我使用一个名为boxvector
的变量来定义网格。在这个例子中,boxvector是:boxvector = [-1., -.5, 0, .5, 1.]
。网格始终是二次的,最大值为-1和1。
盒子通过farray
表示,它看起来像farray = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]
。因此,每个盒子都有一个值,每当算法在相应的盒子中找到一个点时,该值就会增加。point_list的形式为point_list = [(x0,y0),(x1,y1),(x3,y3), ...]
感谢您的帮助!