我用Python做了一个动作。 此函数用于从给定范围创建具有坐标的网格。你知道吗
请输入:
信封(xMin, xMax, yMin, yMax)
xDist每个网格的X距离
每个网格的Y向距离
在退出功能时给出2个列表
xResutl是每个网格的X坐标
yResult是每个网格的Y坐标
我的代码是:
from math import *
def distanceEuclidean(x1, y1, x2, y2):
return sqrt( (x2 - x1)**2 + (y2 - y1)**2 )
def makeGrid(envelope, distX, distY):
nbMeshX = int(ceil(distanceEuclidean(envelope[0], 0, envelope[1], 0)/distX))
nbMeshY = int(ceil(distanceEuclidean(envelope[2], 0, envelope[3], 0)/distY))
nbMesh = nbMeshX*nbMeshY
xResult, yResult = range(nbMesh), range(nbMesh)
count = 0
for x in xrange(nbMeshX):
for y in xrange(nbMeshY):
x1 = envelope[0]+x*distX
x2 = envelope[0]+(x+1)*distX
y1 = envelope[2]+y*distY
y2 = envelope[2]+(y+1)*distY
xResult[count], yResult[count] =[x1,x2,x2,x1,x1], [y1, y1, y2, y2, y1]
count += 1
return xResult, yResult
当我用一个小信封它好!但是当我使用一个非常大的信封时,函数非常慢,结果列表非常大,非常慢,并且占用大量内存。你知道吗
例如:
用一个小信封:
输入:
envelope = [-10, 10, -15, 25]
print makeGrid(envelope, 20, 15)
输出:
>>> ([[-10, 10, 10, -10, -10], [-10, 10, 10, -10, -10], [-10, 10, 10, -10, -10]], [[-15, -15, 0, 0, -15], [0, 0, 15, 15, 0], [15, 15, 30, 30, 15]])
用一个很大的信封:
输入:
envelope = [47300, 1198000, 1617200, 2677500]
print makeGrid(envelope, 100, 100)
输出:
>>> MemoryError
你有什么办法来减少时间计算和/或内存存储吗?你知道吗
非常感谢!你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐