返回课程
AI018 Professional

NumPy 用户指南

一份全面的 NumPy 入门概述和技术指南,涵盖安装、数组操作、索引、广播以及与 C/C++ 的集成。

4.9
15.0h
891 名学生
0 点赞
人工智能
开始学习

课程概述

📚 内容概要

一份关于 NumPy 的全面入门概述与技术指南,涵盖安装、数组操作、索引、广播机制以及与 C/C++ 的集成。

通过官方 NumPy 指南,掌握 Python 科学计算的基础。

作者: NumPy 社区

致谢: 由 NumPy 社区编写

🎯 学习目标

  1. 定义 NumPy 并识别其在科学计算 Python 生态系统中的作用。
  2. 使用向量化(vectorization)的概念解释为何 NumPy 比标准 Python 循环快得多。
  3. 执行各种环境(包括 Pip、Conda 和 Raspberry Pi)的安装命令。
  4. 识别并解释核心 ndarray 属性,如 ndimshapedtype
  5. 使用 linspacereshapevstackhstack 等函数执行数组创建与操作。
  6. 对数值数据集应用逐元素运算、通用函数(ufuncs)和线性代数求解器。
  7. 使用 NumPy 的标量类型及信息工具(iinfofinfo)管理数据精度并避免溢出错误。
  8. 使用 genfromtxt 实现灵活的数据读取,支持自定义分隔符、表头和列选择。
  9. 应用通用广播规则,预测并控制不同形状数组之间的交互。
  10. 通过 .base 属性管理内存引用,避免自定义 ndarray 子类中的“陷阱”。

🔹 第 1 课:介绍与环境设置

概述: 本课程介绍 NumPy 作为 Python 科学计算的核心库,通过向量化解释其性能优势。学生将学习如何在各种平台(Windows、Raspberry Pi、Conda、PyCharm)上安装该库,并解决常见的安装问题(如 ImportError),方法包括管理环境变量和系统依赖。

学习成果:

  • 定义 NumPy 并识别其在科学计算 Python 生态系统中的作用。
  • 使用向量化概念解释为何 NumPy 比标准 Python 循环快得多。
  • 执行各种环境(包括 Pip、Conda 和 Raspberry Pi)的安装命令。

🔹 第 2 课:核心基础与数组操作

概述: 本课程全面介绍 NumPy 的 ndarray 对象,涵盖其核心属性、创建方法和基本数学运算。内容延伸至高级主题,包括高级索引(布尔型与整数型)、形状变换以及关键的线性代数运算。完成本模块后,学习者将能够高效地存储、转换和分析多维数据结构。

学习成果:

  • 识别并解释核心 ndarray 属性,如 ndimshapedtype
  • 使用 linspacereshapevstackhstack 等函数执行数组创建与操作。
  • 对数值数据集应用逐元素运算、通用函数(ufuncs)和线性代数求解器。

🔹 第 3 课:高级数据处理与广播机制

概述: 本课程深入探讨 NumPy 的高级机制,重点在于精确的数据类型管理、溢出处理以及使用 genfromtxt 进行复杂的 I/O 操作。学生将掌握广播机制的内部逻辑,理解内存层面的字节序细节,并学会创建用于异构数据集的结构化/记录数组。最后部分详细介绍通过自定义数组容器扩展 NumPy 的能力,以及 ndarray 子类化的正式协议。

学习成果:

  • 使用 NumPy 的标量类型及信息工具(iinfofinfo)管理数据精度并避免溢出错误。
  • 使用 genfromtxt 实现灵活的数据读取,支持自定义分隔符、表头和列选择。
  • 应用通用广播规则,预测并控制不同形状数组之间的交互。

🔹 第 4 课:数值异常与语言接口

概述: 本课程深入探讨 NumPy 子类化的高级细节,特别是内存管理与下游兼容性方面的问题。进一步研究 NumPy 如何实现 IEEE 754 浮点标准以处理特殊值和数值异常,最后介绍将 NumPy 数组与低级语言(如 C、C++、Fortran)进行接口的方法。

学习成果:

  • 通过 .base 属性管理内存引用,避免自定义 ndarray 子类中的“陷阱”。
  • 通过正确实现 __array_wrap__ 和方法签名,保持子类的下游兼容性。
  • 识别并操作 IEEE 754 特殊值(NaN、Inf),并配置全局数值异常行为。

🔹 第 5 课:通过 C-API 扩展 NumPy

概述: 本课程探讨通过与编译语言(如 C、C++、Fortran)接口来扩展 NumPy 功能的各种方法。内容涵盖自动化工具(如 f2py 和 Cython)、手动封装(ctypes)、高性能通用函数(ufuncs)的创建,以及用于数组迭代、自定义数据类型和 ndarray 子类化的高级 C-API 技巧。

学习成果:

  • 比较并实现将编译代码与 Python “粘合”的多种方法(f2py、Cython、ctypes)。
  • 构建并注册适用于单个或多个数据类型(包括结构化数组)的自定义 NumPy 通用函数(ufuncs)。
  • 利用 NumPy C-API 实现高效的数组迭代,处理广播机制,并定义用户自定义数据类型或 ndarray 子类型。