平面上有100个点,求任意两点间的欧式距离,并将其保存;提示:使用np.linspace()函数; n=100,给出完整代码,并详细解释一下
时间: 2024-10-08 17:26:16 浏览: 66
在Python中,我们可以使用NumPy库的`linspace()`函数生成100个均匀分布的点,并通过计算数组的差来得到任意两点之间的欧氏距离。首先,我们需要导入必要的库并创建数组。以下是一个完整的代码示例:
```python
import numpy as np
# 创建1到100之间等间距的100个点
n = 100
points = np.linspace(1, 100, n) # 这里生成了从1到100,步长为1的一维数组
# 欧式距离矩阵:对于每个点i和j(i < j),计算它们的距离并保存在一个二维数组中
distance_matrix = np.zeros((n, n)) # 初始化一个全零的(n, n)大小的矩阵
for i in range(n):
for j in range(i+1, n): # 避免重复计算,因为距离是对称的
distance_matrix[i][j] = np.sqrt(np.sum((points[i] - points[j])**2))
distance_matrix[j][i] = distance_matrix[i][j] # 保存对称的值
# 你可以选择只保存上三角部分,因为距离是对称的
upper_triangle = distance_matrix[np.triu_indices(n, k=1)]
# 现在,upper_triangle包含了所有非对角线上的距离
```
在这个代码中,我们使用了两个嵌套循环来计算每一对点之间的距离。`sqrt(np.sum((points[i] - points[j])**2))`这部分就是计算两点间欧氏距离的公式。最后,`np.triu_indices(n, k=1)`用于获取距离矩阵的上三角部分。
阅读全文