【发布时间】:2022-11-18 03:38:15
【问题描述】:
我找到两对随机点之间的距离,然后以 3 x 3 模式复制这些点,以便在一定距离后看到相同的点,这是通过嵌套 for 循环完成的。我试图从 for 循环中找到新创建的点之间的距离。
我尝试在循环中使用 append 来存储点,这给了我距离,但它只给了我 24 个距离,而 4 个点的 9 个副本之间应该有更多的距离。
我是否没有实施追加校正来考虑额外的距离?
代码
import numpy as np
import matplotlib.pyplot as plt
import random
import math
dist = []
#scale of the plot
scalevalue = 10
x = [random.uniform(1, 10) for n in range(4)]
y = [random.uniform(1, 10) for n in range(4)]
tiles = np.linspace(-scalevalue, scalevalue, 3)
for i in tiles:
for j in tiles:
bg_tile = plt.scatter(x + i,y + j, c="black", s=3)
dist.append(i)
dist.append(j)
pairs = list(zip(x + i,y + j))
plt.show()
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)
【问题讨论】:
-
我看到
x和y是普通列表,而你正在做x + i所以我预计那里会出现错误,而不是在dist.append(i)行,你实际看到的输出是什么? -
我假设我看到了 3x3 图案的每个中心点的位置之间的距离。我得到
[-10.0, -10.0, -10.0, 0.0, -10.0, 10.0, 0.0, -10.0, 0.0, 0.0, 0.0, 10.0, 10.0, -10.0, 10.0, 0.0, 10.0, 10.0, 0.5490723814252758, 1.5985711880070652, 3.2443215556507923, 1.6263661505494527, 3.258106715408061, 3.5873679393211675],其中最后四个值是中心四个点之间的距离,其他值是图的比例 (scalevalue) 的距离。
标签: python numpy append distance