讲师中心 微信公众号
AI工具推荐 视频效率加速

Python怎么计算NumPy数组的切比雪夫距离_使用abs与max求解

陌明吖_5555

陌明吖_5555

发布时间:2026-03-31 08:44:01

|

771人浏览过

|

来源于php中文网

原创

切比雪夫距离可手动用np.max(np.abs(a - b))计算:先逐元素相减,再取绝对值,最后取最大值;需确保数组形状兼容广播,批量计算需手动升维或循环。

python怎么计算numpy数组的切比雪夫距离_使用abs与max求解

怎么用 np.max 和 np.abs 手动算切比雪夫距离

切比雪夫距离本质就是两向量各维度差值的绝对值中的最大值,不需要调库函数也能一行写完。核心就是先做逐元素减法,再取绝对值,最后取最大。

常见错误是直接对整个数组调 np.max 而没指定 axis,结果得到一个标量而非按样本计算的距离;或者忘了用 np.abs,负数差值拉低了最大值。

  • 确保两个数组形状一致,比如都是 (n, d),否则减法会触发广播,可能算出意外结果
  • 如果比较的是单个样本对(一维),直接写 np.max(np.abs(a - b))
  • 如果是批量计算(比如 a 是 (m, d),b 是 (n, d)),得用循环或手动广播,scipy.spatial.distance.cdist 更稳妥
  • np.abs 对 float32 和 int64 都安全,但若含 NaN,np.max 默认会传播 NaN,需加 nan_policy='omit' 类逻辑(实际得用 np.nanmax)

为什么不用 scipy.spatial.distance.chebyshev

它确实封装好了,但内部做的就是和上面一样的事:调 np.max(np.abs(u - v))。用它的唯一好处是自动处理 NaN 和输入校验;缺点是多一层函数调用开销,且不支持向量化批量计算(只能一对一对来)。

如果你已经在用 scipy,且只算几次距离,用 chebyshev 没问题;但要是嵌在热循环里、或者要算上万对,自己写 np.max(np.abs(...)) 更快也更可控。

立即学习“Python免费学习笔记(深入)”;

macOS UI 自动化技能包 —— 用 Python 控制你的 Mac
macOS UI 自动化技能包 —— 用 Python 控制你的 Mac

让 macOS 自动化像说话一样简单 —— 用代码控制你的 Mac,无需学习 AppleScript 系统要求 macOS 14+ (Sonoma) Python 3.9+ 需要开启:辅助功能 + 屏幕录制权限

下载
  • scipy.spatial.distance.chebyshev 不接受二维数组批量输入,传 (1000, 5) 和 (1000, 5) 会报错,必须用循环
  • 它对 inf 和 -inf 的处理和 np.max 一致,但不会警告——出问题时更难定位
  • 若项目禁止引入 scipy,这方法就不可用,而纯 NumPy 写法零依赖

遇到 ValueError: operands could not be broadcast together 怎么办

这是最常卡住人的地方:两个数组维度不匹配,NumPy 尝试广播失败。切比雪夫距离要求“可逐元素相减”,意味着除 batch 维外,其余维度必须严格一致。

比如想算 100 个点((100, 4))到 1 个中心点((4,))的距离,可以;但拿 (100, 4) 去减 (50, 4) 就不行——不是所有组合都合法。

  • 检查形状:a.shape == b.shape 或其中一个是 (d,)(能被广播)
  • 需要全连接式计算(如所有 A 中点对所有 B 中点)?别硬广播,改用 np.expand_dims 手动升维:np.max(np.abs(a[:, None] - b[None, :]), axis=2)
  • 如果其中一个数组是列向量((n, 1)),另一个是行向量((1, m)),广播后变成 (n, m),但这时算的不是切比雪夫距离,而是矩阵差——小心语义错位

性能敏感时要注意的细节

纯 NumPy 实现快,但有几个隐性坑会影响实测速度:内存连续性、中间数组分配、数据类型。

例如 np.max(np.abs(a - b)) 会新建两个临时数组(差值、绝对值),对大数组有 GC 压力;而原地操作或使用 np.subtract + np.fabs 并指定 out= 参数可省掉一次分配。

  • 优先保证 a 和 b 是 C-contiguous(用 a.flags.c_contiguous 检查),否则 np.abs 可能慢 2–3 倍
  • 避免重复计算:如果多次用同一组 b 去比不同 a,把 np.abs(b) 提前算好没用——因为要的是 abs(a - b),不是 abs(a) - abs(b)
  • float32 数组比 float64 在 np.max 上快约 15%,但要注意精度是否够用

事情说清了就结束。切比雪夫距离本身简单,但数组形状、广播规则、临时内存这几块最容易在调试时花掉半天。

热门AI工具

更多
Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

相关专题

更多
python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

1831

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

4944

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

1789

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

29637

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

3527

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

3547

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

1223

2023.08.11

python合并两个列表
python合并两个列表

Python是一种强大的编程语言,具有许多方便的功能和工具。在Python中,有多种方法可以合并两个列表。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

616

2023.08.10

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

60

2026.10.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Uvicorn官方安装与入门手册
Uvicorn官方安装与入门手册

共0课时 | 0人学习

Python uv官方项目管理指南
Python uv官方项目管理指南

共0课时 | 0人学习

Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn