闵可夫斯基距离:从理论到代码实现,多 p 值计算与结果对比
```python import numpy as np def minkowski_distance(x, y, p): """ 计算闵可夫斯基距离 参数: x (numpy.ndarray):向量 x y (numpy.ndarray):向量 y p (int):距离的参数 返回: float:闵可夫斯基距离 """ diff = np.abs(x - y) # 计算向量差的绝对值 power = np.power(diff, p) # 对差值的绝对值进行 p 次幂运算 sum_power = np.sum(power) # 求和 distance = np.power(sum_power, 1 / p) # 开 p 次方 return distance # 测试向量 a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) # 计算 p=1,2,3,4 时的距离 for p in [1, 2, 3, 4]: distance = minkowski_distance(a, b, p) print(f"当 p={p} 时,距离为:{distance}") # 对比 p=1,2 时与上述计算结果是否一致 distance_p1 = minkowski_distance(a, b, 1) distance_p2 = minkowski_distance(a, b, 2) if distance_p1 == np.abs(a[0] - b[0]) + np.abs(a[1] - b[1]) + np.abs(a[2] - b[2]): print("p=1 时,计算结果一致") else: print("p=1 时,计算结果不一致") if distance_p2 == np.sqrt((a[0] - b[0])**2 + (a[1] - b[1])**2 + (a[2] - b[2])**2): print("p=2 时,计算结果一致") else: print("p=2 时,计算结果不一致") ``` 额外需要注意的逻辑点: 1. 要确保输入的向量 x 和 y 维度相同,否则计算会出错。 2. 对于不同的 p 值,可能会出现数值精度的问题,需要注意处理。 3. 在对比计算结果时,要考虑到数值的近似相等情况,而不是严格的相等。 ######[AI写代码神器 | 537点数解答 | 2024-11-19 22:44:44]
- 易语言子程序 TriggerCode 代码详解:通配符查找与结果运算(字节豆包 | 607点数解答 | 2026-02-09 11:59:34)57
- 易语言代码优化:自动出售物资子程序整合与优化全解析(DeepSeek | 2181点数解答 | 2025-07-23 10:26:29)232
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)384
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)352
- Matlab 实现遗传算法求解图最短路径:参数设置与关键操作解析(字节豆包 | 128点数解答 | 2024-11-25 02:48:03)214
- MATLAB代码:修正遗传算法初始化种群代码,解决潜在错误(字节豆包 | 360点数解答 | 2024-11-25 02:48:49)207
- C++代码实现计算骑行总时间及详细解析(字节豆包 | 460点数解答 | 2026-03-03 19:51:23)34
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)501
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)389
- C++ 代码实现自定义运算 x@y = x² + y² - xy 及 x@(x+y) 计算(DeepSeek | 215点数解答 | 2025-12-13 15:08:14)100
- C++ 实现根据输入正整数奇偶性计算偶数和或约数和(字节豆包 | 838点数解答 | 2026-02-28 20:23:59)59
- 工程师必知:性能分析结果的完整步骤与注意要点(百度文心 | 354点数解答 | 2023-11-09 18:30:48)314