作者:杰ZGJ8513 | 来源:互联网 | 2024-12-02 15:18
在数据分析和机器学习领域,计算向量间的欧氏距离是一项基本且重要的任务。本文将介绍如何使用Python中的NumPy库高效地完成这一操作。假设我们有两个向量vec1和vec2,它们均为NumPy数组,可以通过以下两种方法计算其欧氏距离:
方法一,手动实现欧氏距离计算公式:
import numpy as np
dist = np.sqrt(np.sum(np.square(vec1 - vec2)))
方法二,利用NumPy提供的线性代数模块:
dist = np.linalg.norm(vec1 - vec2)
扩展阅读:除了单个向量间的距离计算外,有时我们也需要计算某个点到一组数据点的距离总和。例如,给定一个点i和一系列数据点,我们可以定义一个函数来计算这个点到所有其他点的欧氏距离之和:
import numpy as np
def euclidean_distance(point1, point2):
return np.sqrt(np.sum((point1 - point2) ** 2))
i = np.array([1, 1])
j = np.array([3, 3])
distance = euclidean_distance(i, j)
print(f'Point i to point j distance: {distance}')
此外,为了可视化这些数据点及其距离,我们可以使用matplotlib库绘制散点图:
import matplotlib.pyplot as plt
# 生成随机数据点
all_points = np.random.rand(500, 2)
plt.scatter(all_points[:, 0], all_points[:, 1], color='blue')
plt.title('Random Data Points')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
plt.show()
对于计算一个特定点到多个数据点的总距离,可以进一步定义一个函数,该函数接收一个点和一个数据点集合作为参数,并返回距离总和:
def total_distance_to_points(center_point, data_points):
distances = np.sqrt(np.sum((center_point - data_points)**2, axis=1))
return np.sum(distances)
# 使用之前生成的数据点进行测试
center_point = np.array([0.5, 0.5])
total_dist = total_distance_to_points(center_point, all_points)
print(f'Total distance from center point to all points: {total_dist:.2f}')
通过上述示例,读者不仅可以了解到如何计算两个向量间的欧氏距离,还能掌握如何在实际项目中应用这些计算方法。希望本文能为您的数据分析工作提供帮助。