我在圖表上繪制隨機點。我想在串列中找到從每個點到另一個點的歐西爾德距離。
可以在此處查看以前的結果/嘗試
我為 x 和 y 坐標生成 4 個介于 0 和 10 之間的亂數,然后使用 np.array 將它們配對。我需要使用距離公式和嵌套回圈來計算串列中兩點之間的距離。這會生成 8 個值,我假設它們是距離。因為有 4 個點,所以點之間應該有 6 個距離。
我在遠程論壇上編程不正確嗎?還是我錯誤地定義了這些點?
下面的代碼
import numpy as np
import matplotlib.pyplot as plt
import random
import math
dist = []
x = [random.uniform(1, 10) for n in range(4)]
y = [random.uniform(1, 10) for n in range(4)]
plt.scatter(x, y)
plt.show()
pairs = np.array([x, y])
def distance(x, y):
return math.sqrt((x[0]-x[1])**2 (y[0]-y[1])**2)
for x in pairs:
for y in pairs:
d = distance(x, y)
dist.append(d)
print(pairs)
uj5u.com熱心網友回復:
可以試試下面的代碼來實作計算每對點之間的距離
import random
import math
dist = []
x = [random.uniform(1, 10) for n in range(4)]
y = [random.uniform(1, 10) for n in range(4)]
pairs = list(zip(x,y))
def distance(x, y):
return math.sqrt((x[0]-x[1])**2 (y[0]-y[1])**2)
for i in range(len(pairs)):
for j in range(i 1,len(pairs)):
dist.append(distance(pairs[i],pairs[j]))
print(dist)
uj5u.com熱心網友回復:
您可以使用 numpy 廣播創建一個距離矩陣,其中 at 的條目(i,j)是從第i個點到第j個點的距離。盡可能避免使用 Python 回圈,因為它們相對較慢。
a = np.random.uniform(size=(4,2,1)) # coordinate of i-th point is a[i, :, 0]
np.sqrt(np.sum(np.square(a - a.T), axis=1))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/534363.html
標籤:Python嵌套距离
