在python轨迹相似性度量中,闵可夫斯基距离的代码
时间: 2024-11-22 07:45:03 浏览: 6
在Python中,闵可夫斯基距离(Minkowski Distance)是一种常用的轨迹相似性度量方法,特别是在处理多维数据集时。它基于n维空间中的点之间的欧几里得距离的推广。Minkowski距离一般形式为:
\( D(p, q)_p = \left(\sum_{i=1}^{n} |p_i - q_i|^p\right)^{\frac{1}{p}} \)
其中 \( p \) 是一个正数(通常取值为1、2或无穷大),\( p=1 \) 表示曼哈顿距离,\( p=2 \) 表示欧氏距离,而 \( p=\infty \) 则表示切比雪夫距离。
下面是一个简单的例子,展示了如何在Python中计算两个轨迹(这里假设轨迹是列表形式,包含同等数量的一维坐标)的Minkowski距离:
```python
from typing import List
from numpy import inf
def minkowski_distance(traj1: List[float], traj2: List[float], p: float = 2) -> float:
# 确保两个轨迹长度相等
assert len(traj1) == len(traj2), "Trajectories must have the same length"
# 使用numpy计算绝对差并求幂,最后求和并开根号
distance = (np.abs(np.array(traj1) - np.array(traj2)) ** p).sum() ** (1/p)
return distance if p != inf else max(np.abs(np.array(traj1) - np.array(traj2)))
# 示例
traj1 = [1, 2, 3]
traj2 = [4, 5, 6]
distance = minkowski_distance(traj1, traj2)
print(f"Minkowski distance between traj1 and traj2 with p={p}: {distance}")
阅读全文