图解入门Numpy

简介: NumPy 是一个运行速度非常快的数学库,主要用于数组计算。NumPy中最核心的数据结构是ND array,表示N维数组。数组中的数据类型要统一大规模的数学运算时,运行速度快提供了很多数据运算的函数比如平均值和标准差等等深度学习中为啥经常用到numpy?轻松处理大数据深度学习的模型通常需要处理非常大的数据,比如图像、音频、文本等。这些数据通常会用数组或矩阵表示。NumPy让这些数据的处理变得很简单,因为它提供了一个叫做“ndarray”的数组,能够快速存储和操作这些数据。

  image.gif

numpy 的介绍

      NumPy 是一个运行速度非常快的数学库,主要用于数组计算

NumPy中最核心的数据结构是ND array,表示N维数组

特点:

        数组中的数据类型要统一

        大规模的数学运算时,运行速度快

        提供了很多数据运算的函数比如平均值和标准差等等

深度学习中为啥经常用到numpy?

轻松处理大数据

     深度学习的模型通常需要处理非常大的数据,比如图像、音频、文本等。这些数据通常会用数

组或矩阵表示。NumPy让这些数据的处理变得很简单,因为它提供了一个叫做“ndarray”的数组,

能够快速存储和操作这些数据。而且它可以方便地做切片、索引等操作,帮助我们轻松获取和修改

数据。

与深度学习框架兼容

      现在很多深度学习框架(比如TensorFlow、PyTorch)都在背后使用NumPy。虽然这些框架也

有自己的数据结构(比如张量),但是它们通常和NumPy数组可以直接转换,也就是说你可以在

深度学习框架和NumPy之间自由转换数据,甚至用NumPy做一些小的计算和调试。


numpy数组初识

image.gif

numpy数组简单创建

数据是数组的形式:

    你平时看到的很多数据,像图片、音频、文本等,其实都可以看作是数组。比如,图片就是由

一个个像素点组成的,而这些像素点可以用三维数组来表示。学习如何用NumPy创建数组,就是

学会如何处理这些数据。

image.gif

通过arry函数创建数组(一维、二维、三维)

image.gif

image.gif

image.gif

numpy数组常用属性

image.gif

.shape数组的形状,使用频率最高

.ndim数组的维数,使用频率一般

.astype数组的数据类型,也比较常用

image.gif

numpy数组轴的概念

                            可以把轴理解为第几个维度

image.gif


numpy数组创建

image.gif

等间隔数组

image.gif

以下两个函数只能创建一维数组。

np.arange(): 按照给定的步长根据起点和终点生成一维数组

np.linspace(): 按照给定的数组长度,均匀划分起点到终点的距离生成一维数组

image.gif

image.gif

全等数组

image.gif

以下3个函数创建的数组,所有数组元素均相等

np.zeros(): 生成一个全为0的一维或多维数组。

np.ones(): 生成一个全为1的一维或多维数组。

np.full(): 生成一个元素全部相等的一维或多维数组。

image.gif

image.gif

image.gif


numpy数组操作

image.gif

数组形变

image.gif

改变数组的形状,数组的.shape属性会发生变化

  • ndarray.reshape(): 改变数组的形状
  • ndarray.T: 数组转置
  • ndarray.ravel(): 拉直数组

image.gif

image.gif

image.gif

image.gif

image.gif 编辑

数组拼接

将多个相同维度的数组拼接起来

  • np.concatenate(): 数组拼接,可以选择特定的轴进行数组拼接
  • np.hstack(): 数组横向拼接
  • np.vstack(): 数组纵向拼接

image.gif

image.gif

image.gif

image.gif

image.gif

image.gif

image.gif

image.gif

image.gif

image.gif

image.gif

  • np.concatenate可以沿数组不同的方向进行拼接。
  • np.hstack对于二维及以上的数组,总是沿着axis=1的方向进行拼接。
  • np.vstack对于二维及以上的数组,总是沿着axis=0的方向进行拼接。
  • np.vstack只能拼接长度相同的一维数组。
  • np.vstack拼接一维数组后输出的结果是一个二维数组

数组拆分

数组拼接的反向操作

  • np.hsplit(): 数组横向拆分
  • np.vsplit(): 数组纵向拆分

image.gif

image.gif


numpy数组索引

image.gif

image.gif


numpy数组运算

image.gif

基本运算

四则运算:(+-*/) 以及求模(%)、取整(//) 、乘方(**)

比较运算:==, !=, >, <, >=, <=

矩阵乘法:@

image.gif

image.gif

image.gif

常用运算函数

常用的运算函数,会对数组中的每个元素执行运算

  • np.sqrt(arr): 开二次根号
  • np.square(arr): 求平方相当于arr ** 2
  • np.sin(arr): sin函数
  • np.cos(arr): cos函数
  • np.exp(arr): e的次幂
  • np.log(arr): 以e为底的对数

image.gif

常用统计函数

常用的统计函数,统计函数和运算函数的一大区别是:

运算函数计算的结果与原数组的形状一样,而统计函数计算结果数组形状与原数组不一样

  • ndarray.max(): 求数组最大值
  • ndarray.min(): 求数组最小值
  • ndarray.mean(): 求数组均值
  • ndarray.std(): 求数组标准差
  • ndarray.var(): 求数组方差
  • ndarray.sum(): 数组求和
  • ndarray.argmax(): 求数组最大值所在的位置
  • ndarray.argmin(): 求数组最小值所在的位置

上面这些函数,用法都大差不差。它们都有axis这个参数,主要就是控制这个参数。

因此只需要掌握参数axis的对数组计算结果有何影响即可。

如果不指定轴axis,默认对整个数组计算统计量

axis=None

image.gif

axis=1

image.gif

 参考文献:

[1]GitHub - Light2077/drawing_and_studying_numpy: 边画边学numpy


目录
相关文章
|
3月前
|
机器学习/深度学习 编解码 算法
PyTorch深度学习实战 |手算​​U-net
本文详细解析了U-Net网络架构及其在医学图像分割中的应用。重点对比了U-Net与FCN的核心区别:U-Net采用特征拼接(Concat)保留所有层级信息,而FCN使用特征相加(Add)进行融合。文章深入剖析了U-Net的编码器-瓶颈-解码器结构,解释了其独特的裁剪拼接机制和Overlap-tile策略,并提供了完整的PyTorch实现代码。现代U-Net通过SamePadding实现了输入输出尺寸一致,显著提升了分割精度。文章还探讨了弹性形变数据增强和带空间权重的损失函数设计,为医学图像分析提供了实用解决
302 2
|
3月前
|
机器学习/深度学习 自然语言处理 PyTorch
PyTorch深度学习实战 |手算ViT(Vision Transformer)模型
ViT将图像分块为Patch,经卷积嵌入成Token序列,加入CLS Token和位置编码后输入Transformer Encoder。其核心是让简单分类头依赖Encoder提炼的强特征,凸显Transformer的全局特征提取能力,奠定多模态大模型基础。(239字)
478 0
|
编译器 C语言 C++
【C语言】malloc()函数详解(动态内存开辟函数)
【C语言】malloc()函数详解(动态内存开辟函数)
4991 2
|
3月前
|
机器学习/深度学习 数据采集 人工智能
田间杂草检测数据集分享(适用于YOLO系列深度学习分类检测任务)
本数据集含4000张真实农田图像(小麦/玉米/水稻田),YOLO格式标注杂草目标,覆盖多天气、光照与视角,适用于YOLO系列等目标检测模型训练,助力智能除草与精准农业研究。(239字)
478 16
|
3月前
|
存储 人工智能 弹性计算
2026年阿里云618大促政策详解:新老用户权益与补贴规则
2026年阿里云618以**“AI加速季,智惠生产力”**为主题,活动周期为6月1日至6月30日,为期30天,是阿里云年度力度最大的云产品促销活动。本次大促投入**5亿元算力补贴**,覆盖轻量应用服务器、ECS云服务器、GPU高性能实例、数据库、AI大模型、存储与CDN等全品类产品,构建“新客秒杀、老客同价、企业补贴、AI特惠”的完整优惠体系。政策层面打破行业“首年低价、次年涨价”的痛点,推出**续费同价至2029年**、**新老用户权益互通**、**企业迁云高额补贴**等核心规则,同时将AI产品纳入优惠核心,通义千问主力模型直降97%,GPU实例低至1.5折。本文从活动基础信息、核心优惠政策
714 3
|
3月前
|
人工智能 自然语言处理 安全
Vibe Coding 实战:别盲目跟风,先分清 vibe coding 适合什么场景
本文系统总结vibe coding实战经验:明确其适用场景(原型、小工具、标准化模块),剖析5步落地流程(场景判定→结构化提示词→目录初始化→分模块生成→自动化校验),指出四大常见误区,并推荐适配工具Trae。强调“场景匹配+规则前置”是提效关键,避免盲目套用。
1778 1
|
3月前
|
机器学习/深度学习 数据可视化 PyTorch
PyTorch深度学习实战 |语义分割基础知识
《PyTorch语义分割实战解析》摘要:本文深入探讨语义分割中的标签处理技术,对比P模式与L模式的本质区别。P模式通过调色板实现人机双重视觉效果,底层存储类别索引(0,1,2等),表面呈现彩色可视化效果。针对边缘模糊问题,提出使用255作为忽略标签(IgnoreLabel)的解决方案。文章系统梳理7大评价指标:从基础的像素准确率(PA)到综合性的mIoU和mF1,特别强调mIoU作为核心指标的重要性,其平衡各类别的特性使其成为模型性能评估的黄金标准。通过技术原理与实战经验的结合,为深度学习从业者提供了语义分
233 0
|
3月前
|
机器学习/深度学习 存储 并行计算
PyTorch深度学习实战 |从深度学习入门到项目化的任务(以Alexnet网络花分类任务为例)
本文介绍了PyTorch深度学习实战中的项目化开发方法。作者指出实际项目与玩具数据集的不同之处,强调需要考虑数据标准化、模型保存和实验追踪等工程问题。文章详细讲解了项目化文件结构,包括configs、models、utils等模块的划分,并提供了关键工具函数的实现,如YAML配置加载、模型检查点保存/加载、评估指标计算等。通过一个AlexNet训练示例,展示了如何将模型训练、验证和预测逻辑分离,构建完整的工程闭环。文章强调深度学习实战中80%时间在处理工程问题,只有20%在模型架构上,帮助读者从学习阶段过渡
242 0
|
3月前
|
机器学习/深度学习 PyTorch 测试技术
PyTorch深度学习实战 |多头注意力机制
摘要:本文详细介绍了Transformer中的多头自注意力机制,从整体结构到实现细节,包括四部分内容:(1)多头自注意力的基本架构;(2)内部计算流程解析;(3)注意力计算公式详解;(4)代码实现。重点阐述了多头并行的计算方式、缩放点积注意力的计算步骤(QK转置、缩放、softmax和加权求和),以及残差连接和层归一化的作用。通过&quot;Are you OK?&quot;示例展示了输入张量如何经过8个64维注意力头处理后拼接成512维输出。文章最后提供了完整的PyTorch实现代码,并附测试用例验证模型
267 0
|
7月前
|
机器学习/深度学习 缓存 前端开发
讨论下llm的prefix caching机制
本文探讨LLM推理中Prefix Caching机制的原理与实践:解释为何将动态内容(如React循环中的tool call结果)放在system prompt会破坏缓存命中,导致成本激增;强调应将变量部分置于user prompt末尾,以最大化复用system+固定user前缀的KV缓存,显著降本提效
984 7