计算矩阵“[[3,1,8],[1,3,1],[4,3,8],[2,5,0],[6,4,3]]”中任意两点之间的欧式距离,找出产生最小距离的两个点,且所占内存最小代码
时间: 2024-01-08 21:02:14 浏览: 84
计算矩阵中任意两点之间的欧式距离可以用以下代码:
```python
import numpy as np
matrix = np.array([[3,1,8],[1,3,1],[4,3,8],[2,5,0],[6,4,3]])
n = matrix.shape[0]
dist_matrix = np.zeros((n, n))
for i in range(n):
for j in range(i+1, n):
dist_matrix[i, j] = np.sqrt(np.sum((matrix[i] - matrix[j]) ** 2))
dist_matrix[j, i] = dist_matrix[i, j]
min_dist = np.min(dist_matrix[dist_matrix > 0])
i, j = np.where(dist_matrix == min_dist)
print(f"最小距离为{min_dist},产生最小距离的两个点为{list(zip(i, j))}")
```
该代码使用了numpy库中的数组,首先将矩阵转为numpy数组,然后使用两重循环计算欧式距离,使用numpy库的矩阵操作方法使得代码简洁高效。最后找到所有非零距离中的最小距离,并返回该距离及其对应的坐标。
由于没有保存过多中间变量,此代码所占内存较小。
阅读全文