news 2026/4/3 6:40:34

NumPy 实用文档

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
NumPy 实用文档

NumPy 实用文档

文章目录

  • NumPy 实用文档
    • 一、Numpy基础操作
      • 1. 数组创建(Array Creation)
      • 2. 随机数生成(Random)
      • 3. 数组形状操作(Shape Manipulation)
      • 4. 数组连接(Concatenate & Stack)
      • 5. 广播机制(Broadcasting)
      • 6. 向量化运算(Vectorized Operations)
      • 7. 线性代数(Linear Algebra)
      • 8. 统计函数(Statistics)
      • 9. 类型转换(Type Casting)
      • 10. 索引 / 切片 / 掩码(Indexing & Masking)
    • 二、深度学习常用操作
      • 11. 数据预处理(Data Preprocessing)
      • 12. 数学验证(Math Validation)
      • 13. 手写前向 / 损失 / 数值梯度
      • 14. NumPy ↔ PyTorch 互操作
      • 15. 统计分析(Research Metrics)

这是一个NumPy 常用方法的代码示例汇总,旨在帮助对各类 NumPy 操作有个基本印象,注释仅提供了运行结果与学习提示。(文档长期保持更新,欢迎补充)

如需了解更完整的参数说明、边界行为或扩展功能,建议参考官方文档:NumPy reference — NumPy v2.3 Manual,也可以直接向 ChatGPT 等工具咨询相关细节。

一、Numpy基础操作

1. 数组创建(Array Creation)

importnumpyasnp a=np.array([[1,2,3],[4,5,6]])# 输出:# [[1 2 3]# [4 5 6]]zeros=np.zeros((2,3))# 输出:# [[0. 0. 0.]# [0. 0. 0.]]ones=np.ones((2,3))# 输出:# [[1. 1. 1.]# [1. 1. 1.]]arange_arr=np.arange(0,10,2)# 输出: [0 2 4 6 8]linspace_arr=np.linspace(0,1,5)# 输出: [0. 0.25 0.5 0.75 1. ]

2. 随机数生成(Random)

rand=np.random.rand(2,3)# 输出为 0~1均匀分布的随机数,默认float64# [[0.12 0.88 0.56]# [0.77 0.32 0.45]]randn=np.random.randn(2,3)# 输出为标准正态分布随机数,形状为(2,3)randint=np.random.randint(0,10,(2,3))# 输出 0~9 的整数矩阵np.random.seed(42)# 设置种子,之后np.random的同一命令对应同一数组fixed_rand=np.random.rand(2,2)# 固定输出:# [[0.37454012 0.95071431]# [0.73199394 0.59865848]]

3. 数组形状操作(Shape Manipulation)

reshaped=a.reshape(3,2)# 输出:# [[1 2]# [3 4]# [5 6]]transposed=a.T# 输出:# [[1 4]# [2 5]# [3 6]]expanded=np.expand_dims(a,axis=1)# 在索引第1轴插入大小为1的新轴# 输出形状: (2, 1, 3)squeezed=np.squeeze(expanded)# 删除所有大小为1的轴# 输出形状: (2, 3)

注意理解ndarray数组的的概念。

4. 数组连接(Concatenate & Stack)

b=np.array([[7,8,9],[10,11,12]])vstack=np.concatenate((a,b),axis=0)# 输出:# [[ 1 2 3]# [ 4 5 6]# [ 7 8 9]# [10 11 12]]hstack=np.concatenate((a,b),axis=1)# 输出:# [[ 1 2 3 7 8 9]# [ 4 5 6 10 11 12]]

5. 广播机制(Broadcasting)

x=np.array([[1],[2],[3]])# shape (3,1)y=np.array([10,20,30])# shape (3,)result=x+y# 广播后结果:# [[11 21 31]# [12 22 32]# [13 23 33]]

在 ndarray 的逐元素运算中,广播机制会逻辑上将数组扩展为兼容形状,使其可以与其他数组对齐参与计算。这种扩展是虚拟的,并不在内存中产生完整的复制数组,而是通过重复引用原数组的数据实现计算。

6. 向量化运算(Vectorized Operations)

v=np.array([1,2,3,4])v_sq=v**2# 输出: [ 1 4 9 16]v_exp=np.exp(v)# 输出: [ 2.718 7.389 20.085 54.598]v_sin=np.sin(v)# 输出约: [0.841 0.909 0.141 -0.757]

大多为逐元素运算。

7. 线性代数(Linear Algebra)

M=np.array([[1,2],[3,4]])v2=np.array([1,2])M @ v2# 传统代码习惯使用np.dot(M,v2)# 输出: [5 11]np.linalg.inv(M)# 输出逆矩阵:# [[-2. 1. ]# [ 1.5 -0.5]]np.linalg.norm(M)# 输出矩阵的Frobenius范数# 即所有矩阵元素的平方和的平方根# 输出约:5.477(\sqrt{30})

注意理解ndarray形状和矩阵运算的对应关系。

8. 统计函数(Statistics)

arr=np.array([1,2,3,4,5])np.mean(arr)# 3.0np.var(arr)# 方差=2.0np.std(arr)# 标准差≈ 1.414np.sum(arr)# 15np.min(arr)# 1np.max(arr)# 5

9. 类型转换(Type Casting)

arr.astype(np.float32)# 输出: dtype=np.float32 的数组

10. 索引 / 切片 / 掩码(Indexing & Masking)

# 定义二维数组 aa=np.array([[1,2,3],[4,5,6]])# 切片操作slice_arr=a[:,1:]# ":" 表示取所有行; "1:" 表示从第1列到最后一列# 输出:# [[2 3]# [5 6]]

注意学习多维数组的切片操作。

# 定义数组 arrarr=np.array([1,2,3,4,5])# 布尔掩码操作mask=arr[arr%2==0]# 输出: [2 4]

注意学习多维数组的掩码操作,比如元素掩码平铺为一维输出,或者逐行掩码多维输出。

二、深度学习常用操作

11. 数据预处理(Data Preprocessing)

x=np.random.rand(5,3)# 默认float64np.save("demo.npy",x)# 将ndarray数组保存为npy文件x_loaded=np.load("demo.npy")# 解析npy文件,得到保存的ndarray数组x_fp32=x_loaded.astype(np.float32)# 数据统一转换为 float32 是常见操作x_std=(x_fp32-x_fp32.mean())/(x_fp32.std()+1e-6)# 标准化后:mean ≈ 0; std ≈ 1# 添加1e-6小量,防止分母为0# 由于PyTorch的卷积层要求输入格式为 NCHWimg=np.random.rand(32,32,3)# HWC格式img_chw=img.transpose(2,0,1)# 重排为CHW格式# 输出形状: (3, 32, 32)

注意:.npy文件是存一个 ndarray 的格式。
注意:建议了解有关图片数据的 HWC 存储格式,RGB润色。

12. 数学验证(Math Validation)

A=np.random.randn(3,3)b=np.random.randn(3)np.linalg.solve(A,b)# 输出:线性方程组 Ax=b 的解np.linalg.svd(A)[1]# 输出:A 的奇异值

13. 手写前向 / 损失 / 数值梯度

x=np.random.randn(4)W=np.random.randn(3,4)*0.01b=np.zeros(3)h=W @ x+b relu=np.maximum(h,0)# 输出:ReLU 激活后的向量deff(w):# 假设的损失函数,参数为wreturn((w @ x)**2).sum()eps=1e-5# epsilon小量,即dwgrad_numeric=(f(W+eps)-f(W-eps))/(2*eps)# 输出:数值梯度,用于验证正确性

推荐使用pytorch框架下的函数。

14. NumPy ↔ PyTorch 互操作

np_arr=np.random.randn(2,2).astype(np.float32)t=torch.from_numpy(np_arr)# 输出: torch.Tensor,其底层与 np_arr 共享内存np_back=t.numpy()# 输出: numpy.ndarray

常用操作,pytorch张量用于构建计算图等,ndarray用于数据处理和文件存储。

15. 统计分析(Research Metrics)

pred=np.random.rand(100)gt=np.random.rand(100)err=np.linalg.norm(pred-gt)/(np.linalg.norm(gt)+1e-6)# 相对 L2 误差,例如: 0.41mean=pred.mean()std=pred.std()percentile_90=np.percentile(pred,90)# 均值,标准差,90分位数

更多复杂的统计量可以用已有方法构建,也可以问gpt有无现成函数和方法。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/31 9:58:07

教程 29 - 从磁盘加载纹理

上一篇:图像/纹理描述符 | 下一篇:纹理系统 | 返回目录 📚 快速导航 📋 目录 引言学习目标stb_image库简介纹理加载架构实现纹理创建函数实现纹理加载函数透明度检测默认纹理回退机制纹理热重载支持调试事件系统测试纹理切换内存…

作者头像 李华
网站建设 2026/4/2 16:56:24

告别选择困难!2025年远程控制软件场景化终极横评

推荐标题:告别选择困难!2025年远程控制软件场景化终极横评 在混合办公成为常态的今天,远程控制软件已从“备用工具”升级为“生产力刚需”。面对市场上众多的选择,你是否也曾迷失在AI推荐、朋友安利和广告轰炸中?本文将…

作者头像 李华
网站建设 2026/3/31 0:58:59

基于SpringBoot的出差报销管理系统的设计与实现毕业设计项目源码

项目简介基于 SpringBoot 的出差报销管理系统,直击 “传统报销流程繁琐、票据审核效率低、费用管控不透明” 的核心痛点,依托 SpringBoot 轻量级框架优势与流程引擎技术,构建 “全流程线上化 智能审核 数据管控” 的一体化报销管理平台。系…

作者头像 李华
网站建设 2026/3/28 16:21:20

基于SpringBoot的高校失物招领管理系统毕业设计项目源码

项目简介基于 SpringBoot 的高校失物招领管理系统,直击 “校园失物信息分散、认领流程繁琐、物品找回效率低” 的核心痛点,依托 SpringBoot 轻量级框架优势与校园场景化适配能力,构建 “信息发布 智能匹配 流程管控” 的一体化失物招领平台…

作者头像 李华
网站建设 2026/3/17 9:24:37

Jeecg AI开源平台:零门槛构建AI应用的完整指南

Jeecg AI是基于Apache-2.0协议的全栈式AI开发平台,支持ChatGPT、DeepSeek等多种大模型。它提供AI流程编排、智能对话、知识库构建和RAG增强功能,采用JavaVue3技术栈。作为低代码与AIGC结合的平台,Jeecg AI更便于业务系统集成,帮助…

作者头像 李华
网站建设 2026/4/2 17:26:00

用蜣螂优化(DBO)算法攻克分布式置换流水车间调度问题

利用蜣螂优化(DBO)算法求解分布式置换流水车间调度问题(Distributed permutation flow-shop scheduling problem, DPFSP) 其中:main.m是主函数运行即可;DBO.m是算法的代码;color_selection用于获得甘特图的颜色配置;gantt_chart.m…

作者头像 李华