我希望能为提高代码运行速度提供一些帮助。
具体而言,我有一个包含纬度和经度点的方格列表“insideoceanlist”。然后有一个目录,其中包含特定日期闪电打击的“lat, long”坐标的数据文件。每天的想法是要知道每个点周围有多少闪电打击。目前只是两个for循环,因此对于方格上的每个点,您都要检查那天每次闪电打击距离它有多远。如果在40公里内,则在该点处添加1以制作密度图。
起始网格的整体形状类似于长方形,由宽度为0.11,长度为0.11的正方形组成。整个矩形约为50x30。最后我有一个形状文件,用于勾画澳大利亚的“预测区域”,如果网格中的任何点在此区域之外,则我们省略它。因此,所有剩余的点(“insideoceanlist”)都是澳大利亚的点。
方格网格上约有100,000个点,即使在低峰期也会有大约1,000次闪电击打,因此处理时间很长。有没有更有效的方法?非常感谢您的建议。
顺便说一下,我将“list2”更改为“list3”,因为我听说在Python中迭代列表比数组更快。
具体而言,我有一个包含纬度和经度点的方格列表“insideoceanlist”。然后有一个目录,其中包含特定日期闪电打击的“lat, long”坐标的数据文件。每天的想法是要知道每个点周围有多少闪电打击。目前只是两个for循环,因此对于方格上的每个点,您都要检查那天每次闪电打击距离它有多远。如果在40公里内,则在该点处添加1以制作密度图。
起始网格的整体形状类似于长方形,由宽度为0.11,长度为0.11的正方形组成。整个矩形约为50x30。最后我有一个形状文件,用于勾画澳大利亚的“预测区域”,如果网格中的任何点在此区域之外,则我们省略它。因此,所有剩余的点(“insideoceanlist”)都是澳大利亚的点。
方格网格上约有100,000个点,即使在低峰期也会有大约1,000次闪电击打,因此处理时间很长。有没有更有效的方法?非常感谢您的建议。
顺便说一下,我将“list2”更改为“list3”,因为我听说在Python中迭代列表比数组更快。
for i in range(len(list1)): #list1 is a list of data files containing lat,long coords for lightning strikes for each day
dict_density = {}
for k in insideoceanlist: #insideoceanlist is a grid of ~100000 lat,long points
dict_density[k] = 0
list2 = np.loadtxt(list1[i],delimiter = ",") #this open one of the files containing lat,long coords and puts it into an array
list3 = map(list,list2) #converts the array into a list
# the following part is what I wanted to improve
for j in insideoceanlist:
for l in list3:
if great_circle(l,j).meters < 40000: #great_circle is a function which measures distance between points the two lat,long points
dict_density[j] += 1
#
filename = 'example' +str(i) + '.txt'
with open(filename, 'w') as f:
for m in range(len(insideoceanlist)):
f.write('%s\n' % (dict_density[insideoceanlist[m]])) #writes each point in the same order as the insideoceanlist
f.close()