NumPy 是一个用于科学计算的 Python 库,提供了高性能的多维数组对象和用于处理这些数组的工具。向量化操作是指使用 NumPy 的数组操作,而不是显式的 Python 循环,这样可以显著提高计算效率。
NumPy 提供了多种距离计算函数,如欧几里得距离、曼哈顿距离等。
在数据分析、机器学习、图像处理等领域,经常需要计算数据点之间的距离。
假设我们有两个形状为 (m, 3)
的 NumPy 数组 A
和 B
,我们需要计算它们之间的成对欧几里得距离。
import numpy as np
def pairwise_distances(A, B):
# 计算 A 和 B 之间的差值
diff = A[:, np.newaxis, :] - B[np.newaxis, :, :]
# 计算欧几里得距离
distances = np.sqrt(np.sum(diff ** 2, axis=-1))
return distances
# 示例数据
A = np.array([[1, 2, 3], [4, 5, 6]])
B = np.array([[7, 8, 9], [10, 11, 12]])
# 计算成对距离
distances = pairwise_distances(A, B)
print(distances)
A[:, np.newaxis, :] - B[np.newaxis, :, :]
生成了一个形状为 (m, m, 3)
的数组,其中每个元素是 A
和 B
中对应点的差值。np.sqrt(np.sum(diff ** 2, axis=-1))
计算了每个差值的平方和的平方根,即欧几里得距离。通过这种方式,你可以高效地计算两个矩阵之间的成对距离。
领取专属 10元无门槛券
手把手带您无忧上云