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

Python深度学习:NumPy数组库


文章目录

  • NumPy 数组核心概念与操作指南
    • 一、NumPy 数组概述
      • 1.1 与传统列表的比较
      • 1.2 数组类型系统
    • 二、数组创建与基本操作
      • 2.1 创建数组
      • 2.2 数组维度理解
    • 三、数组索引与切片
      • 3.1 基本索引
      • 3.2 切片操作
      • 3.3 提取矩阵的行/列
      • 3.4 切片的重要特性
    • 四、数组变形与操作
      • 4.1 重塑数组形状
      • 4.2 数组拼接注意事项
      • 4.3 数组分裂
    • 五、数组运算与广播机制
      • 5.1 基本运算
      • 5.2 广播规则
    • 六、线性代数与特殊函数
      • 6.1 矩阵乘积
      • 6.2 常用线性代数函数
    • **提示**:在实际应用中,理解这些核心概念对于高效使用NumPy进行科学计算和数据分析至关重要。广播机制和视图概念是NumPy最强大但也最容易误解的特性,需要特别注意。
  • 总结


NumPy 数组核心概念与操作指南

一、NumPy 数组概述

1.1 与传统列表的比较

  • Python 列表缺点:可以存储不同数据类型,需要额外空间存储类型信息,导致内存冗余
  • NumPy 数组优势:要求所有元素类型一致,节省内存空间,提高计算效率

1.2 数组类型系统

  • 整数型数组:所有元素均为整数时创建
  • 浮点型数组:包含任意浮点数时自动升级为浮点型
  • 类型同化原则:数组中所有元素会自动转换为最高精度的数据类型

二、数组创建与基本操作

2.1 创建数组

import numpy as np# 将列表转换为数组
arr = np.array([1, 2, 3])  # 创建整数型数组
arr_float = np.array([1, 2.5, 3])  # 创建浮点型数组# 使用专用函数创建数组
ones_arr = np.ones(5)  # 创建全1数组
zeros_arr = np.zeros((2, 3))  # 创建全0二维数组

2.2 数组维度理解

  • 一维数组:向量(单层中括号)
  • 二维数组:矩阵(双层中括号)
  • 高维数组:张量(多层中括号)

三、数组索引与切片

3.1 基本索引

arr = np.array([[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12]])# 普通索引(单层中括号)
print(arr[0, 1])  # 输出: 2# 花式索引(双层中括号)
print(arr[[0, 2], [1, 3]])  # 输出: [2, 12]

3.2 切片操作

# 矩阵切片(半开区间)
print(arr[1:3, 1:-1])  # 行1-2,列1-2(不含最后一列)# 跳跃采样
print(arr[::2, ::3])  # 每隔2行、每隔3列采样

3.3 提取矩阵的行/列

# 提取行并转换为列向量
row = arr[1, :]  # 提取第1行(一维数组)
col_matrix = row.reshape(-1, 1)  # 转换为列向量(二维数组)

3.4 切片的重要特性

  • 数组切片是视图而非副本,修改切片会影响原数组
  • 内存优化技巧:使用 arr[:] = <表达式> 替代 arr = <表达式> 可节省内存

四、数组变形与操作

4.1 重塑数组形状

# 使用reshape方法改变数组维度
vector = np.arange(1, 4)  # 一维数组: [1, 2, 3]
matrix = vector.reshape(1, 3)  # 二维数组: [[1, 2, 3]]

4.2 数组拼接注意事项

  • 不同维度的数组不能直接拼接(如向量与矩阵)
  • 必须先统一维度再进行拼接操作

4.3 数组分裂

# 使用split进行数组截断
arr = np.arange(10)
result = np.split(arr, [3, 7])  # 在索引3和7处分割数组

五、数组运算与广播机制

5.1 基本运算

  • 乘法默认执行"逐元素相乘"(Hadamard积),而非矩阵乘法

5.2 广播规则

不同形状数组间运算的自动适配机制:

  1. 向量与矩阵运算:向量自动升级为行矩阵
  2. 特殊形状广播
    • 行矩阵自动广播适配更高维数组
    • 列矩阵自动广播适配更高维数组

六、线性代数与特殊函数

6.1 矩阵乘积

# 向量与向量的点积
v1 = np.array([1, 2, 3])
v2 = np.array([4, 5, 6])
dot_product = np.dot(v1, v2)  # 点积运算# 矩阵乘法
matrix1 = np.array([[1, 2], [3, 4]])
matrix2 = np.array([[5, 6], [7, 8]])
mat_product = np.matmul(matrix1, matrix2)  # 矩阵乘法

6.2 常用线性代数函数

  • np.linalg.inv(): 矩阵求逆
  • np.linalg.det(): 矩阵行列式
  • np.linalg.eig(): 特征值与特征向量计算

提示:在实际应用中,理解这些核心概念对于高效使用NumPy进行科学计算和数据分析至关重要。广播机制和视图概念是NumPy最强大但也最容易误解的特性,需要特别注意。

总结

如果我的内容对你有帮助,请点赞👍、关注❤、收藏⭐️。创作不易,大家的支持就是我坚持下去的动力!在这里插入图片描述


文章转载自:

http://pUKStokb.mfnsn.cn
http://nEoOnLfA.mfnsn.cn
http://ae2nCPUi.mfnsn.cn
http://c2s5aZae.mfnsn.cn
http://3Sql0ncY.mfnsn.cn
http://7hWFSvmB.mfnsn.cn
http://xCDzaLsy.mfnsn.cn
http://SrBAYYaI.mfnsn.cn
http://FBiXeCTw.mfnsn.cn
http://UikGT9zZ.mfnsn.cn
http://uxOIfqvQ.mfnsn.cn
http://xhGQ9dEF.mfnsn.cn
http://hzNvDteo.mfnsn.cn
http://Xt8GKt0Q.mfnsn.cn
http://GpS3PwVD.mfnsn.cn
http://bkLKjBWy.mfnsn.cn
http://747Iqx4l.mfnsn.cn
http://1t5UALPF.mfnsn.cn
http://t3rzCJgn.mfnsn.cn
http://aTCELXjw.mfnsn.cn
http://pI8Wcqqr.mfnsn.cn
http://6E1aaLuW.mfnsn.cn
http://t29zpLWu.mfnsn.cn
http://uKQzvbed.mfnsn.cn
http://imqgkS8u.mfnsn.cn
http://hGaJC3RR.mfnsn.cn
http://86UGc1eb.mfnsn.cn
http://729ZGN1p.mfnsn.cn
http://2rHXghsq.mfnsn.cn
http://X5FP0z9u.mfnsn.cn
http://www.dtcms.com/a/377494.html

相关文章:

  • Django时区感知
  • PostgreSQL15——Java访问PostgreSQL
  • Shell 函数详解
  • 【系统分析师】第21章-论文:系统分析师论文写作要点(核心总结)
  • Linux 命令(top/ps/netstat/vmstat/grep/sed/awk)及服务管理(systemd)
  • 【图像生成】提示词技巧
  • 揭秘Linux:开源多任务操作系统的强大基因
  • (ICLR-2025)深度压缩自动编码器用于高效高分辨率扩散模型
  • 《Why Language Models Hallucinate》论文解读
  • 【机器学习】通过tensorflow实现猫狗识别的深度学习进阶之路
  • AD5362BSTZ电子元器件 ADI 高精度数字模拟转换器DAC 集成电路IC
  • DMA-M2M存储器与存储器之间读写
  • Mistral Document AI已正式登陆Azure AI Foundry(国际版)
  • 机器学习实战(二):Pandas 特征工程与模型协同进阶
  • Flutter 朦胧效果布局大全:5种方法实现优雅视觉层次
  • 【CVPR2023】奔跑而非行走:追求更高FLOPS以实现更快神经网络
  • PHP学习(第三天)
  • 数仓简要笔记-1
  • 机器人商业化落地需要突破的关键性技术
  • AI 技术体系核心概念
  • STM32H750 I2C介绍及应用
  • 计算机网络---物理层
  • 【freemarker】创建html页面
  • 【华为OD】区块链文件转储系统
  • sprintf不是像printf一样的打印函数吗
  • Js 图片加载完成 与 图片缓存加载的区别
  • 汽车动力电池管理系统(BMS):电动汽车的“智能大脑”
  • n8n add npm module 發生 Module ‘ioredis‘ is disallowed,getaddrinfo EAI_AGAIN
  • 性能——day3
  • 安卓学习 之 SeekBar(音视频播放进度条)