0

0

Python怎么计算NumPy数组的范数_调用norm函数量化向量长度

P粉602998670

P粉602998670

发布时间:2026-03-19 08:52:31

|

371人浏览过

|

来源于php中文网

原创

numpy.linalg.norm 是计算向量或矩阵范数的正确函数,需显式导入或使用全路径调用,且对多维数组必须指定 axis 参数以避免误算 Frobenius 范数。

python怎么计算numpy数组的范数_调用norm函数量化向量长度

norm函数在numpy.linalg里,不是numpy自带的

很多人搜 numpy.norm 会直接写错——它根本不在 numpy 命名空间下,而是藏在 numpy.linalg 子模块里。直接 import numpy as np; np.norm(...) 会报 AttributeError

正确做法是:

import numpy as np
from numpy.linalg import norm

或者更稳妥地写全路径:

import numpy as np
np.linalg.norm(x)
  • 别用 from numpy import * 期望把 norm 拉进来——它不会自动导入子模块里的函数
  • 如果同时用到 scipy.linalg.norm,注意两者行为基本一致,但 scipy 版本对稀疏矩阵支持更好
  • np.linalg.norm 默认计算 Frobenius 范数(对矩阵)或 2-范数(对向量),不是欧氏距离的“开根号前”版本

向量长度默认就是2-范数,但得确认输入是1D

想算一个向量的“长度”,比如 [3, 4] 得到 5.0,直接传一维数组就行:

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

x = np.array([3, 4])
np.linalg.norm(x)  # → 5.0

但容易踩坑的是:如果你传的是列向量(shape 为 (2, 1)),结果一样;可一旦是二维数组且你没指定 axis,它会按矩阵整体算 Frobenius 范数(即所有元素平方和再开根),不是你想的“每行/每列的长度”。

  • 确保输入是 1D:x.flatten()x.ravel() 可保险处理
  • 不要依赖 np.array([3, 4]).T 来“转置成列向量”再算——它仍是 1D,除非显式用 [:, None]
  • 如果原始数据是 DataFrame 列或 Series,先用 .values 拿出 ndarray,否则可能触发 pandas 的隐式转换异常

axis参数控制按行/列算范数,不设就全量聚合

对二维数组,比如想得到每行的长度(即每条样本的 L2 模长),必须显式加 axis=1

Felvin
Felvin

AI无代码市场,只需一个提示快速构建应用程序

下载
X = np.array([[3, 4],
              [5, 12]])
np.linalg.norm(X, axis=1)  # → array([5., 13.])

同理,axis=0 是按列算(每列向量的长度)。漏掉 axis 就会返回单个标量:整个矩阵的 Frobenius 范数。

  • axis 不接受字符串,只认整数或整数元组;axis=(0, 1) 等价于不设
  • 如果数组有 3D+,axis 必须明确指定要压缩哪些维度,否则报 ValueError: Invalid axis
  • 性能上,带 axis 的调用比全量略慢,但差别在微秒级,不用提前优化

ord参数换范数类型,但别乱用负数或非整数

ord 控制范数种类:ord=1 是曼哈顿距离,ord=2(默认)是欧氏,ord=np.inf 是最大绝对值。这些都安全。

但以下情况容易出问题:

  • ord=-1ord=-2 是“反向范数”,数学上有定义但极少实用,且对含零向量会出 infnan
  • ord=0 不是 L0“范数”(它其实不算范数),而是非零元个数,但 np.linalg.norm 不支持 ord=0,会报 NotImplementedError
  • 浮点 ordord=1.5 虽然能跑,但数值不稳定,尤其当元素接近零时误差放大明显

真要算 L0 稀疏度,直接用 np.count_nonzero(x);要算 L1,就老实用 ord=1

实际用的时候,最常漏的是 import 路径和 axis 参数,尤其是从 pandas 或 sklearn 拿数据后直接喂给 norm,形状不对又没设 axis,结果就莫名其妙。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

781

2023.06.15

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

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

697

2023.07.20

python能做什么
python能做什么

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

784

2023.07.25

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

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

890

2023.07.31

python教程
python教程

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

1564

2023.08.03

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

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

598

2023.08.04

python eval
python eval

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

591

2023.08.04

scratch和python区别
scratch和python区别

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

759

2023.08.11

Python WebSocket实时通信与异步服务开发实践
Python WebSocket实时通信与异步服务开发实践

本专题聚焦 Python 在实时通信场景中的开发实践,系统讲解 WebSocket 协议原理、长连接管理、消息推送机制以及异步服务架构设计。内容包括客户端与服务端通信实现、连接稳定性优化、消息队列集成及高并发处理策略。通过完整案例,帮助开发者构建高效稳定的实时通信系统,适用于聊天应用、实时数据推送等场景。

7

2026.03.18

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.5万人学习

Django 教程
Django 教程

共28课时 | 5.1万人学习

SciPy 教程
SciPy 教程

共10课时 | 2万人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号