我正在尋找從python中指定點的3D距離。現在,我正在使用for循環。但是計算速度有點慢。Numpy從指定點發現3D座標距離
這裏是Python代碼:
for i_y in xrange(0,500,100):
y = round(i_y/100.00,2)
for i_x in xrange(0, 800, 1):
x = round(i_x/100.00,2)
for i_z in xrange(500, 0, -1):
z = round(i_z/100.00,2)
for key in specifiedPoints.keys():
a = specifiedPoints[key]
subx1 = x-a.p1.x
suby1 = y-a.p1.y
subz1 = z-a.p1.z
subx2 = x-a.p2.x
suby2 = y-a.p2.y
subz2 = z-a.p2.z
subx3 = x-a.p3.x
suby3 = y-a.p3.y
subz3 = z-a.p3.z
distver1 = math.sqrt(subx1*subx1+suby1*suby1+subz1*subz1)
distver2 = math.sqrt(subx2*subx2+suby2*suby2+subz2*subz2)
distver3 = math.sqrt(subx3*subx3+suby3*suby3+subz3*subz3)
if distver1 <= 1 or distver2<=1 or distver3<=1:
print "close point:", x, y, z
我做了很多,但我無法找到一個明確的教程,顯示在numpy的平等循環。
我該如何在numpy中加速循環?
謝謝
是測試點總是將是一個規則的網格?在你的例子中,'i_z','i_y','i_z'來自一個常規的for循環。如果是這樣,那麼你可以加速計算,特別是如果它重複。 – dtlussier
是的,測試點總是相同的x,y,z點。指定的點可以在每個測試中更改。 – oyildirim