Numpy基础教程:掌握Python数据处理核心技能

版权申诉
5星 · 超过95%的资源 1 下载量 124 浏览量 更新于2024-10-20 收藏 1.18MB ZIP 举报
资源摘要信息:"本文是一个关于Numpy的入门教程,主要面向python语言的学习者。Numpy是python中最基础和最强大的科学计算和数据处理工具包,其在数据分析和机器学习领域具有广泛的应用。Numpy的核心是n维数组,它支持高效的数组操作,包括创建数组、数组运算、数组切片、索引、迭代等。同时,Numpy也支持各种数学函数和线性代数运算,这使得Numpy在数据处理和分析中具有无与伦比的优势。例如,数据分析工具pandas就是基于numpy构建的,而机器学习包scikit-learn也大量使用了numpy方法。本文将详细介绍Numpy的n维数组在数据处理和分析中的所有核心应用,帮助读者快速掌握numpy的使用方法,为后续的数据分析和机器学习学习打下坚实的基础。" 知识点详细说明: 1. Numpy简介 - Numpy是Python语言中用于科学计算的核心库,它提供了一个高性能的多维数组对象ndarray,以及用于处理数组的工具。 - Numpy是一个开源项目,其提供了大量的数学函数库,能够执行复杂的运算,如矩阵运算和傅里叶变换等。 - Numpy库经常被用于数据分析、机器学习、深度学习以及科学计算中。 2. Numpy数组(ndarray) - Numpy中的n维数组是Numpy的核心数据结构,用于存储同类型的数据。 - 数组的每个元素在内存中都是连续存放的,这使得Numpy的数组在执行向量化操作时可以实现非常高的性能。 - 数组可以通过Numpy的构造函数创建,也可以从Python的列表、元组等转换而成。 3. 数组操作 - 数组的创建:可以通过np.array()、np.arange()、np.zeros()、np.ones()、np.linspace()等函数创建数组。 - 数组的基本运算:支持元素间的算术运算、比较运算和布尔运算。 - 数组的索引和切片:Numpy提供了灵活的索引和切片方式,可以实现高效的数组元素访问和数据操作。 - 数组的形状操作:可以使用reshape()、resize()、ravel()等函数改变数组的形状。 4. 数学函数和统计函数 - Numpy提供了大量的一元和二元数学函数,如sin()、cos()、exp()、log()、sqrt()等,这些函数可以对数组中的每个元素进行操作。 - Numpy还包含了许多统计函数,如mean()、median()、sum()、std()等,用于计算数组的统计数据。 5. 线性代数运算 - Numpy提供了强大的线性代数运算功能,包括矩阵的乘法、求逆、特征值和特征向量计算等。 - 这些功能由np.dot()、np.linalg.inv()、np.linalg.eig()等函数提供支持。 6. Numpy与Pandas和Scikit-learn的关系 - Pandas是一个强大的数据分析工具包,它是基于Numpy构建的,很多底层操作都依赖于Numpy的数组结构。 - Scikit-learn是常用的机器学习库,大量算法实现都依赖于Numpy,进行高效的矩阵运算和数据处理。 7. 入门学习路径 - 对于初学者而言,首先需要了解Numpy数组的基本概念和创建方法。 - 接着,通过实践各种数组操作来熟悉索引、切片、合并、分割等技巧。 - 然后,学习Numpy提供的各种数学和统计函数,并尝试应用在数据分析中。 - 最后,结合实际案例,了解Numpy如何在Pandas和Scikit-learn等更高层次的工具中发挥作用,以及如何将Numpy应用于机器学习和深度学习项目中。 本文教程通过丰富的示例和详细的解释,帮助读者快速了解和掌握Numpy的使用方法,为进行数据分析和机器学习的学习打下坚实的基础。
2020-05-21 上传
说明:本文档所有内容来源于网络 https://www.numpy.org.cn/user/ 目录 1. NUMPY 介绍 1 1.1 什么是 NUMPY? 1 1.2 为什么 NUMPY 这么快? 3 1.3 还有谁在使用 NUMPY? 3 2. 快速入门教程 4 2.1 先决条件 4 2.2 基础知识 4 2.2.1一个例子 5 2.2.2 数组创建 6 2.2.3 打印数组 8 2.2.4 基本操作 10 2.2.5 通函数 13 2.2.6 索引、切片和迭代 14 2.3 形状操纵 18 2.3.1改变数组的形状 18 2.3.2 将不同数组堆叠在一起 20 2.3.3 将一个数组拆分成几个较小的数组 22 2.4 拷贝和视图 23 2.4.1 完全不复制 23 2.4.2 视图或浅拷贝 24 2.4.3 深拷贝 25 2.4.4 功能和方法概述 26 2.5 LESS 基础 26 广播(Broadcasting)规则 27 2.6 花式索引和索引技巧 27 2.6.1使用索引数组进行索引 27 2.6.2使用布尔数组进行索引 31 2.6.3 ix_()函数 34 2.6.4使用字符串建立索引 37 2.7线性代数 37 简单数组操作 37 2.8技巧和提示 38 2.8.1“自动”整形 39 2.8.2矢量堆叠 39 2.8.3直方图 40 2.9进一步阅读 41 3. NUMPY 基础知识 42 3.1 数据类型 42 3.1.1 数组类型之间的转换 42 3.1.2 数组标量 45 3.1.3 溢出错误 46 3.1.4 扩展精度 47 3.2 创建数组 47 3.2.1 简介 48 3.2.2 将Python array_like对象转换为Numpy数组 48 3.2.3 Numpy原生数组的创建 48 3.2.4 从磁盘读取数组 50 3.3 NUMPY与输入输出 51 3.3.1 定义输入 51 3.3.2 将行拆分为列 52 3.3.3 跳过直线并选择列 54 3.3.4 选择数据的类型 55 3.3.5 设置名称 56 3.3.6 调整转换 59 3.3.7 快捷方式函数 62 3.4 索引 62 3.4.1 赋值与引用 63 3.4.2 单个元素索引 63 3.4.3 其他索引选项 64 3.4.4 索引数组 65 3.4.5 索引多维数组 66 3.4.6 布尔或“掩码”索引数组 67 3.4.7 将索引数组与切片组合 69 3.4.8 结构索引工具 70 3.4.9 为索引数组赋值 71 3.4.10 在程序中处理可变数量的索引 72 3.5 广播 73 3.6 字节交换 78 3.6.1字节排序和ndarrays简介 78 3.6.2 更改字节顺序 80 3.7 结构化数组 82 3.7.1 介绍 82 3.7.2 结构化数据类型 83 3.7.3 索引和分配给结构化数组 88 3.7.4 记录数组 96 3.7.5 Recarray Helper 函数 98 3.8编写自定义数组容器 116 3.9子类化NDARRAY 124 3.9.1 介绍 124 3.9.2 视图投影 125 3.9.3 从模板创建 126 3.9.4 视图投影与从模板创建的关系 126 3.9.5 子类化的含义 126 3.9.6 简单示例 —— 向ndarray添加额外属性 132 3.9.7 稍微更现实的例子 —— 添加到现有数组的属性 134 3.9.8 __array_ufunc__ 对于ufuncs 135 3.9.9 __array_wrap__用于ufuncs和其他函数 139 3.9.10 额外的坑 —— 自定义的 __del__ 方法和 ndarray.base 142 3.9.11 子类和下游兼容性 143 4. 其他杂项 144 4.1 IEEE 754 浮点特殊值 144 4.2 NUMPY 如何处理数字异常的 146 4.3 示例 146 4.4 连接到 C 的方式 147 4.4.1 不借助任何工具, 手动打包你的C语言代码。 147 4.4.2 Cython 148 4.4.3 ctypes 148 4.4.4 SWIG(自动包装发生器) 149 4.4.5 scipy.weave 149 4.4.6 Psyco 149 5. 与MATLAB比较 149 5.1 介绍 150 5.2 一些关键的差异 150 5.3 'ARRAY'或'MATRIX'?我应该使用哪个? 151 5.3.1 简答 151 5.3.2 长答案 151 5.4 MATLAB 和 NUMPY粗略的功能对应表 153 5.4.1 一般功能的对应表 153 5.4.2 线性代数功能对应表 154 5.5 备注 161 5.6 自定义您的环境 163 5.7 链接 164 6. 从源代码构建 164 6.1 先决条件 164 6.2 基本安装 164 6.3 测试 165 并行构建 165 6.4 FORTRAN ABI不匹配 165 6.4.1 选择fortran编译器 166 6.4.2 如何检查BLAS / LAPACK /地图集ABI 166 6.5 加速BLAS / LAPACK库 166 6.5.1 BLAS 166 6.5.2 LAPACK 167 6.5.3 禁用ATLAS和其他加速库 167 6.6 提供额外的编译器标志 168 6.7 使用ATLAS支持构建 168 7. 使用NUMPY的C-API 168 7.1 如何扩展NUMPY 168 7.1.1 编写扩展模板 169 7.1.2 必需的子程序 169 7.1.3 定义函数 171 7.1.4 处理数组对象 175 7.1.5 示例 180 7.2 使用PYTHON作为胶水 182 7.2.1 从Python调用其他编译库 183 7.2.2 手工生成的包装器 183 7.2.3 f2py 184 7.2.4 用Cython 191 7.2.5 ctypes 196 7.2.6 您可能会觉得有用的其他工具 206 7.3 编写自己的UFUNC 208 7.3.1 创建一个新的ufunc 208 7.3.2 示例非ufunc扩展名 209 7.3.3 一种dtype的NumPy ufunc示例 215 7.3.4 示例具有多个dtypes的NumPy ufunc 221 7.3.5 示例具有多个参数/返回值的NumPy ufunc 230 7.3.6 示例带有结构化数组dtype参数的NumPy ufunc 235 7.4 深入的知识 241 7.4.1 迭代数组中的元素 242 7.4.2 用户定义的数据类型 246 7.4.3 在C中对ndarray进行子类型化 249