当前位置: 首页 > article >正文

NumPy 使用指南

一、为什么选择 NumPy 而非 Python 列表Python 原生列表list虽能存储数组形式的数据但存在显著性能缺陷内存效率低列表存储的是对象指针即使存储简单数值如[0,1,2]也需要额外存储指针造成内存浪费计算速度慢列表元素分散存储遍历需频繁查找内存地址无法利用 CPU 矢量化指令并行计算差列表原生不支持多线程矩阵运算难以利用多核 CPU 资源。NumPy 解决了上述问题数组元素存储在连续的内存块中无需额外指针开销支持 CPU 矢量化指令计算效率远超列表内置多线程矩阵运算可充分利用硬件资源核心逻辑基于 C 语言实现避免 Python 解释器的性能损耗。优化技巧使用就地操作如x * 2替代隐式拷贝如y x * 2可使运算速度提升 2 倍以上。二、NumPy 核心对象NumPy 核心包含两个关键对象ndarrayN 维数组对象用于存储多维数据ufunc通用函数对象用于对数组元素进行高效运算。2.1 ndarray 多维数组核心概念秩rank数组的维数一维数组秩为 1二维数组秩为 2轴axes数组的维度方向例如二维数组的axis0代表列方向axis1代表行方向属性shape数组尺寸、dtype元素数据类型。创建基础数组import numpy as np # 创建一维数组 a np.array([1, 2, 3]) # 创建二维数组 b np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 修改数组元素下标从 0 开始 b[1,1] 10 # 查看数组属性 print(a 的尺寸, a.shape) # 输出 (3,) print(b 的尺寸, b.shape) # 输出 (3, 3) print(a 的数据类型, a.dtype) # 输出 int32/int64取决于系统 print(修改后的 b\n, b)输出结果a 的尺寸 (3,) b 的尺寸 (3, 3) a 的数据类型 int32 修改后的 b [[ 1 2 3] [ 4 10 6] [ 7 8 9]]结构数组自定义数据类型适用于存储结构化数据如学生信息、商品信息类似 C 语言的structimport numpy as np # 定义结构类型姓名字符串、年龄整型、语文/数学整型、英语浮点型 persontype np.dtype({ names: [name, age, chinese, math, english], formats: [S32, i, i, i, f] }) # 创建结构数组 peoples np.array([ (ZhangFei, 32, 75, 100, 90), (GuanYu, 24, 85, 96, 88.5), (ZhaoYun, 28, 85, 92, 96.5), (HuangZhong, 29, 65, 85, 100) ], dtypepersontype) # 提取指定字段并计算平均值 ages peoples[:][age] chineses peoples[:][chinese] maths peoples[:][math] englishs peoples[:][english] print(平均年龄, np.mean(ages)) print(平均语文成绩, np.mean(chineses)) print(平均数学成绩, np.mean(maths)) print(平均英语成绩, np.mean(englishs))输出结果平均年龄 28.25 平均语文成绩 77.5 平均数学成绩 93.25 平均英语成绩 93.752.2 ufunc 通用函数ufunc 是对数组元素进行批量操作的函数基于 C 语言实现运算速度极快。1. 连续数组创建函数用法说明arangenp.arange(起始, 终止, 步长)不包含终止值生成等差数组linspacenp.linspace(起始, 终止, 元素个数)包含终止值线性等分生成数组示例import numpy as np x1 np.arange(1, 11, 2) # 起始1终止11不含步长2 x2 np.linspace(1, 9, 5) # 起始1终止9含生成5个元素 print(x1, x1) # 输出 [1 3 5 7 9] print(x2, x2) # 输出 [1 3 5 7 9]2. 算术运算支持数组间的加、减、乘、除、次方、取余等运算import numpy as np x1 np.arange(1, 11, 2) x2 np.linspace(1, 9, 5) print(加法, np.add(x1, x2)) # [ 2. 6. 10. 14. 18.] print(减法, np.subtract(x1, x2)) # [0. 0. 0. 0. 0.] print(乘法, np.multiply(x1, x2)) # [ 1. 9. 25. 49. 81.] print(除法, np.divide(x1, x2)) # [1. 1. 1. 1. 1.] print(次方, np.power(x1, x2)) # [1.00000000e00 2.70000000e01 ...] print(取余, np.remainder(x1, x2)) # [0. 0. 0. 0. 0.]也可用 np.mod3. 统计函数函数功能示例二维数组a [[1,2,3],[4,5,6],[7,8,9]]amin(a, axis)计算指定轴的最小值np.amin(a)→ 1np.amin(a, 0)→ [1,2,3]np.amin(a,1)→ [1,4,7]amax(a, axis)计算指定轴的最大值np.amax(a)→ 9np.amax(a, 0)→ [7,8,9]np.amax(a,1)→ [3,6,9]ptp(a, axis)计算最大值与最小值的差极差np.ptp(a)→ 8np.ptp(a, 0)→ [6,6,6]np.ptp(a,1)→ [2,2,2]percentile(a, p, axis)计算第 p 百分位数p∈[0,100]np.percentile(a, 50)→ 5.0np.percentile(a,50,0)→ [4,5,6]median(a, axis)计算中位数np.median(a)→ 5.0np.median(a,0)→ [4,5,6]mean(a, axis)计算算术平均值np.mean(a)→ 5.0np.mean(a,0)→ [4,5,6]average(a, weights)计算加权平均值a[1,2,3,4], wts[1,2,3,4]→ 加权平均为 3.0std(a)计算标准差a[1,2,3,4]→ std≈1.118var(a)计算方差a[1,2,3,4]→ var1.25示例加权平均import numpy as np a np.array([1,2,3,4]) wts np.array([1,2,3,4]) print(算术平均, np.average(a)) # 2.5 print(加权平均, np.average(a, weightswts)) # 3.04. 排序np.sort(a, axis, kind)默认快速排序kindquicksort支持合并排序mergesort、堆排序heapsort。axisNone展平数组后整体排序axis0沿列排序axis1沿行排序默认。示例import numpy as np a np.array([[4,3,2],[2,4,1]]) print(默认排序axis1\n, np.sort(a)) # [[2 3 4],[1 2 4]] print(展平排序, np.sort(a, axisNone)) # [1 2 2 3 4 4] print(沿列排序axis0\n, np.sort(a, axis0)) # [[2 3 1],[4 4 2]] print(沿行排序axis1\n, np.sort(a, axis1)) # [[2 3 4],[1 2 4]]三、核心总结NumPy 优势相比 Python 列表NumPy 数组内存连续、支持矢量化运算和多线程计算效率大幅提升核心对象ndarray用于存储多维数组支持自定义结构ufunc用于数组的高效运算关键操作掌握数组的创建、算术运算、统计分析均值/方差/极差等、排序是 NumPy 应用的核心。

相关文章:

NumPy 使用指南

一、为什么选择 NumPy 而非 Python 列表Python 原生列表(list)虽能存储数组形式的数据,但存在显著性能缺陷:内存效率低:列表存储的是对象指针,即使存储简单数值(如 [0,1,2])&#xf…...

高性能云端GPU推荐,满足深度学习全场景需求

本文以安诺其集团旗下专业GPU算力平台“智星云”为样本,从其技术架构、全系型号定价、主流平台对比、全场景适配四个维度展开,聚焦一个核心问题:在算力价格全线上涨的2026年,高性能深度学习任务如何用合理的预算匹配最合适的GPU方…...

NotebookLM+人类学工作流重构:3类濒危语言档案处理实录(附可复用知识图谱架构)

更多请点击: https://intelliparadigm.com 第一章:NotebookLM人类学研究辅助 NotebookLM 是 Google 推出的基于 LLM 的研究型笔记工具,其核心能力在于对用户上传的私有文档(如田野笔记、访谈转录稿、民族志手稿、考古报告 PDF 等…...

企业内部分享Taotoken在代码审查与生成场景下的应用实践

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 企业内部分享Taotoken在代码审查与生成场景下的应用实践 在软件开发团队中,代码审查与代码生成是提升代码质量、保障项…...

植物大战僵尸杂交版手机版最新版v3.16.1安卓2026最新下载分享

作为长期沉迷植物大战僵尸改版的老玩家,我近期完整体验了杂交版全新V3.16版本,从植物、关卡到平台适配,逐一实测验证。 整体来说,这是一次诚意满满的更新——既有新鲜玩法创新,又兼顾不同玩家需求。 下载链接&#x…...

Midjourney提示词工程实战手册(工业级Prompt架构白皮书):从语义解析、权重分配到多模态对齐的完整链路

更多请点击: https://intelliparadigm.com 第一章:Midjourney提示词工程的核心范式与工业级演进路径 提示词工程已从早期的“关键词堆砌”跃迁为融合语义建模、风格解耦与可控生成的系统性工程。在工业级实践中,其核心范式正围绕**结构化提示…...

ARM Cortex-A72 L2缓存控制寄存器详解与优化实践

1. ARM Cortex-A72 L2缓存控制寄存器概述在ARMv8架构的Cortex-A72处理器中,L2缓存控制寄存器是系统程序员进行性能优化和功耗管理的关键工具。这些寄存器提供了对L2缓存行为的精细控制,主要包括L2CTLR_EL1(L2 Control Register)和…...

MongoDB避坑指南:电脑名含中文导致 Invalid UTF-8 string 报错的完美解决

前言最近在配置 MongoDB 本地环境时,遇到了一个非常“玄学”的报错。明明按照教程一步步安装,环境变量也配好了,但无论是启动服务,还是使用 MongoDB Compass 连接本地数据库,都会直接报错。排查了半天,最后…...

给STM32加个‘U盘’:手把手教你用W25Q64 Flash芯片实现掉电不丢失的数据存储

给STM32加个‘U盘’:手把手教你用W25Q64 Flash芯片实现掉电不丢失的数据存储 在嵌入式系统开发中,数据存储一直是个让人头疼的问题。想象一下,你花了一周时间调试的传感器参数,因为一次意外断电全部丢失;或者精心收集的…...

合肥工业大学LaTeX论文模板:5分钟解决格式难题的专业方案

合肥工业大学LaTeX论文模板:5分钟解决格式难题的专业方案 【免费下载链接】HFUT_Thesis LaTeX Thesis Template for Hefei University of Technology 项目地址: https://gitcode.com/gh_mirrors/hf/HFUT_Thesis 还在为论文格式调整而烦恼吗?合肥工…...

构建个人技能图谱:从GitHub项目到结构化能力管理实践

1. 项目概述:一个技能图谱的构建与价值 最近在整理自己的技术栈时,发现了一个挺有意思的GitHub项目,标题是“headlike-oradexon12/skills”。乍一看,这像是一个个人技能仓库,但深入探究后,我发现它远不止是…...

如何用BilibiliDown轻松下载B站视频:终极跨平台免费开源工具完整指南

如何用BilibiliDown轻松下载B站视频:终极跨平台免费开源工具完整指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.co…...

PP 蜂窝板生产线智能控制系统架构与 PLC 程序设计思路

PP 蜂窝板生产线智能控制系统架构与 PLC 程序设计思路摘要:针对 PP 蜂窝板产线多段速度同步、温度压力闭环、真空度稳定与定长裁切精度要求,本文介绍基于 PLCHMI 的智能控制系统整体架构,分模块阐述挤出温控、真空定型、牵引同步、在线测厚与…...

轻量化目标检测实战:基于Pytorch的Mobilenet-YOLOv4融合架构设计与性能调优

1. 为什么需要轻量化目标检测模型 在移动端和嵌入式设备上运行目标检测模型时,我们常常面临两个关键挑战:计算资源有限和功耗约束。传统的YOLOv4虽然检测精度高,但其基于CSPDarknet53的主干网络参数量大、计算复杂度高,难以在资源…...

Electron鸿蒙PC上的系统托盘,坑比我想象的多三倍

Electron鸿蒙PC上的系统托盘,坑比我想象的多三倍 上个月我在做一个企业内部工具,需要在鸿蒙PC上实现系统托盘常驻和原生通知推送。本来以为这是个小功能,两三个小时搞定,结果愣是折腾了两天半。把过程记录下来,希望后…...

Docker Compose实战:一键部署OpenClaw项目与环境管理

1. 项目概述:一个为OpenClaw项目量身定制的Docker助手 如果你正在折腾一个名为OpenClaw的开源项目,并且被它复杂的依赖环境、繁琐的配置步骤搞得焦头烂额,那么你很可能需要“vivganes/openclaw-docker-helper”这个工具。简单来说&#xff0…...

(122页PPT)数字化IT架构蓝图规划设计方案(附下载方式)

篇幅所限,本文只提供部分资料内容,完整资料请看下面链接 https://download.csdn.net/download/2501_92796370/92683861 资料解读:数字化 IT 架构蓝图规划设计方案 详细资料请看本解读文章的最后内容 在数字化转型浪潮下,运营商…...

开源机械爪资源库指南:从入门到ROS集成与自主抓取

1. 项目概述:一个开源“机械爪”的宝藏资源库如果你对机器人、自动化或者DIY硬件感兴趣,最近又在琢磨着给自己的项目加一个“手”,那么你很可能已经听说过“机械爪”这个概念。无论是想做一个自动抓取小物件的桌面机器人,还是为你…...

千问 LeetCode 2402.会议室 III public int mostBooked(int n, int[][] meetings)

这道题是经典的会议室 III,核心是双堆模拟,一个堆管空闲会议室(按编号排序),一个堆管正在使用的会议室(按结束时间排序)。解题思路1. 排序:按会议开始时间升序排列。 2. 双堆初始化&…...

从Simulink的Vector信号到C代码数组:手把手拆解初始化(initialize)与步进(step)函数的生成逻辑

从Simulink的Vector信号到C代码数组:手把手拆解初始化与步进函数的生成逻辑 在嵌入式系统开发中,Simulink模型到C代码的转换过程往往被视为一个"黑箱"——工程师们习惯性地点击生成按钮,然后接受输出的代码文件。然而,当…...

GitHub加速神器:5分钟安装,告别龟速下载的终极解决方案

GitHub加速神器:5分钟安装,告别龟速下载的终极解决方案 【免费下载链接】Fast-GitHub 国内Github下载很慢,用上了这个插件后,下载速度嗖嗖嗖的~! 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub 还在…...

CTF新手必看:用010 Editor修复PNG图片CRC错误,轻松拿下BUUCTF那道‘一叶障目’题

CTF新手实战:用010 Editor修复PNG图片CRC校验错误 拿到一张打不开的PNG图片,显示"CRC校验失败"?别急着放弃,这可能是CTF比赛中故意设置的陷阱。作为MISC方向的经典题型,修改PNG文件头参数是常见的出题套路。…...

青岛X射线探伤机服务好的供应商

在工业检测领域,X射线探伤机并非一次性采购的设备——它需要持续的技术支持、稳定的运行保障,以及服务商在关键时刻的响应能力。选择一家服务好的供应商,往往比选择一台设备本身更需要慎重。在青岛,有一家名为华誉机电设备有限公司…...

JSON Lint深度解析:如何用PHP实现专业级JSON验证与错误处理

JSON Lint深度解析:如何用PHP实现专业级JSON验证与错误处理 【免费下载链接】jsonlint JSON Lint for PHP 项目地址: https://gitcode.com/gh_mirrors/jso/jsonlint 在当今数据驱动的Web开发中,JSON已成为数据交换的标准格式。然而,当…...

用Adafruit MONSTER M4SK改造Boglin玩具:赋予经典怪物互动电子眼

1. 项目概述:当经典玩具遇上开源硬件如果你和我一样,对上世纪80年代那些造型古怪、充满想象力的玩具情有独钟,同时又是个喜欢动手折腾的创客,那么这个项目绝对能让你兴奋起来。今天我们要聊的,是如何让一个几乎被遗忘的…...

GPT-Image-2 老是生成失败?完整排查和修复指南,5 个真根因逐个击破

GPT-Image-2 老是生成失败?完整排查和修复指南,5 个真根因逐个击破GPT-Image-2 的处理时间比文字模型长很多——高质量 1024px 需要 145-280 秒。大多数所谓的"生成失败"其实不是模型问题,而是网络链路(CDN、反代、SDK&…...

在多轮对话任务中实测 Taotoken 路由策略对响应成功率的影响

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在多轮对话任务中实测 Taotoken 路由策略对响应成功率的影响 1. 测试背景与场景设定 在开发需要长时间连续交互的对话型应用时&am…...

Adobe MAX 2024未公开彩蛋:Sora 2本地推理模块如何通过Premiere Ultra引擎实现离线实时预览(含CUDA核心绑定指南)

更多请点击: https://intelliparadigm.com 第一章:Adobe MAX 2024未公开彩蛋的发现与验证 在 Adobe MAX 2024 主会场演示视频的第 47 分 23 秒处,开发者无意间触发了隐藏的调试面板——该面板仅在启用特定环境变量且运行于 macOS Sonoma Ap…...

基于SpringAI开发的通用RAG脚手框架,适配各种场景

RAG 业务落地开发指导 本文面向后续把这套 RAG 能力接入业务系统的开发者,重点回答三件事: 上游业务请求怎么进入 RAG。RAG 内部各组件怎么串起来。数据分别存到 MySQL、文件存储、向量库和搜索引擎的哪里。 1. 总体边界 独立工程保留的是一套完整 R…...

深圳市2026年打造人工智能先锋城市项目扶持计划申请指南

本项目扶持计划下设十个项目类别,均采用事后奖补类支持方式。1、申报单位需同时满足基础申报条件和专项申报条件。基础申报条件如下:(一)申报单位为在深圳市内(含深汕特别合作区)从事生产经营活动&#xff…...