1122 字
6 分钟
数据分析|本章小结及补充

12.1 NumPy 介绍
NumPy 是 Python 中科学计算的基础包。它是一个 Python 库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/O、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。
NumPy 的核心功能:
ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。- 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。
- 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。
- 线性代数、随机数生成以及傅里叶变换功能。
- 用于集成由 C、C++、Fortran 等语言编写的代码的 API。
12.2 ndarray
12.2.1 NumPy 数组(ndarray)的核心特性
- 多维性:支持 0 维(标量)、1 维(向量)、2 维(矩阵)及更高维数组。
- 同质性:所有元素类型必须一致(通过
dtype指定)。 - 高效性:基于连续内存块存储,支持向量化运算。
12.2.2 ndarray 常用属性
| 属性名称 | 通俗解释 | 使用示例 |
|---|---|---|
shape | 数组的形状:行数和列数(或更高维度的尺寸) | arr.shape |
ndim | 维度数量:数组是几维的(1 维、2 维、3 维等) | arr.ndim |
size | 总元素个数:数组中所有元素的总数 | arr.size |
dtype | 元素类型:数组中元素的类型(整数、浮点数等) | arr.dtype |
T | 转置:行变列,列变行 | arr.T |
itemsize | 单个元素占用的内存字节数 | arr.itemsize |
nbytes | 数组总内存占用量:size * itemsize | arr.nbytes |
flags | 内存存储方式:是否连续存储(高级优化) | arr.flags |
12.3 ndarray 的创建
12.3.1 六大创建分类说明
- 基础构造:适用于手动构建小规模数组或复制已有数据。
- 预定义形状填充:用于快速初始化固定形状的数组(如全 0 占位、全 1 初始化)。
- 基于数值范围生成:生成数值序列,常用于模拟时间序列、坐标网格等。
- 特殊矩阵生成:数学运算专用(如线性代数中的单位矩阵)。
- 随机数组生成:模拟实验数据、初始化神经网络权重等场景。
- 高级构造方法:处理非结构化数据(如文件、字符串)或通过函数生成复杂数组。
12.3.2 创建方法对照表
| 用途 | 方法 |
|---|---|
| 基础构造 | np.array()、np.copy() |
| 预定义形状填充 | np.zeros()、np.ones()、np.empty()、np.full() |
| 基于数值范围生成 | np.arange()、np.linspace()、np.logspace() |
| 特殊矩阵生成 | np.eye()、np.diag() |
| 随机数组生成 | np.random.rand()、np.random.randn()、np.random.randint() |
| 高级构造方法 | np.array()、np.loadtxt()、np.fromfunction() |
12.4 ndarray 的数据类型
| 数据类型 | 说明 |
|---|---|
bool | 布尔类型 |
int8、uint8int16、uint16int32、uint32int64、uint64 | 有符号、无符号的 8 位(1 字节)整型 有符号、无符号的 16 位(2 字节)整型 有符号、无符号的 32 位(4 字节)整型 有符号、无符号的 64 位(8 字节)整型 |
float16float32float64 | 半精度浮点型 单精度浮点型 双精度浮点型 |
complex64complex128 | 用两个 32 位浮点数表示的复数 用两个 64 位浮点数表示的复数 |
12.5 NumPy 常用函数总览
| 分类 | 函数 |
|---|---|
| 基本数学 | np.sqrt(x)、np.exp(x)、np.log(x)、np.sin(x)、np.abs(x)、np.power(a, b)、np.round(x, n) |
| 统计函数 | np.sum(x)、np.mean(x)、np.median(x)、np.std(x)、np.var(x)、np.min(x) / np.max(x)、np.percentile(x, q) |
| 比较函数 | np.greater(a, b)、np.less(a, b)、np.equal(a, b)、np.logical_and(a, b)、np.where(condition, x, y) |
| 去重函数 | np.unique(x)、np.in1d(a, b) |
| 排序函数 | np.sort(x)、x.sort()、np.argsort(x)、np.lexsort(keys) |
| 数组操作 | np.concatenate((a, b))、np.split(x, indices)、np.reshape(x, shape)、np.copy(x)、np.isnan(x) |
12.6 函数补充
下表列出了前文未详细展开、但在实际数据分析中常用的补充函数:
| 函数 | 功能 | 示例 |
|---|---|---|
np.concatenate((a, b)) | 将多个数组沿指定轴拼接 | np.concatenate(([1, 2], [3, 4])) → [1 2 3 4] |
np.count_nonzero(x) | 统计非零元素(或满足条件)的个数 | np.count_nonzero(temps > 30) 统计超过30的天数 |
axis 参数 | 指定聚合方向:axis=0 按列、axis=1 按行 | np.sum(arr, axis=1) 计算每行之和 |
12.7 本节小结
本节完成了以下内容:
- 回顾了 NumPy 的核心定位与功能:
ndarray多维数组、向量化运算、磁盘读写、线性代数与随机数等。 - 梳理了 ndarray 的三大特性(多维性、同质性、高效性)与八项常用属性。
- 归纳了 ndarray 的六大创建分类及对应方法。
- 整理了 ndarray 支持的全部数据类型(布尔、整数、浮点数、复数)。
- 汇总了 NumPy 常用函数速查表,覆盖基本数学、统计、比较、去重、排序和数组操作六大类。
- 补充了
np.concatenate、np.count_nonzero、axis参数等实用函数。
下一节我们将学习 Pandas 库。
数据分析
连载中分享文章
生成精美分享图或复制链接,与更多人分享本文。
继续阅读
换条路线
从其他文章中稳定抽取
最后更新于 ,距今已过 91 天
部分内容可能已过时
评论