大数跨境

NumPy(上):核心数据结构详解

NumPy(上):核心数据结构详解 知识代码AI
2026-08-18
2
导读:NumPy(上):核心数据结构详解一、NumPy简介NumPy 是Python科学计算的基础包,提供了多维数组

NumPy(上):核心数据结构详解


一、NumPy简介

NumPy 是Python科学计算的基础包,提供了多维数组对象(ndarray)及高效的数组操作。安装方式为 conda install numpy 或 pip install numpy

学习NumPy的意义

  • PyTorch的Tensor与NumPy数组计算逻辑高度相似;
  • NumPy广泛用于Pandas、SciPy等模块;
  • 图像处理本质上就是将图片转为NumPy数组后再进行处理。

二、NumPy数组 vs Python列表

对比项
Python列表
NumPy数组
大小
可动态改变
创建时固定大小,改变长度会创建新数组
数据类型
可多样化
必须一致
性能
较慢
速度快,内存占用更少

三、创建数组的多种方式

1. np.array() 与 np.asarray()

  • 将列表传入即可创建数组,支持任意维度。
  • np.array() 是深拷贝,np.asarray() 是浅拷贝,注意区分使用场景。

2. np.ones() 与 np.zeros()

  • 创建全1或全0数组,需指定 shape,可选指定 dtype
  • 示例:np.ones((2,3)) * 0.5 可用于初始化权重。

3. np.arange([start,] stop [, step, dtype])

  • 创建 [start, stop) 区间、步长为 step 的数组(左闭右开)。
  • 示例:np.arange(2, 9, 3) → array([2, 5, 8])

4. np.linspace(start, stop, num=50, endpoint=True)

  • 创建从 start 到 stop 的等差数列,num 指定元素个数,endpoint 决定是否包含 stop。

四、数组的关键属性

属性
含义
示例
ndim
维度(轴)的个数
二维数组 ndim=2
shape
形状,整数元组
(2,3)
 表示2行3列
size
元素总数
shape各维度乘积
dtype
数据类型
int8、int32、float32、float64等

注意事项

  • 未指定类型时NumPy自动推断(如int64);
  • 使用 astype() 可改变数据类型,但会创建新数组,原数组不变
  • 不能直接修改 dtype 属性(如 arr.dtype = 'int32'),会导致数据错乱。

五、形状变换:reshape

  • arr.reshape(newshape):不改变元素内容,只改变形状,变换前后元素总数必须相同。
  • np.reshape(a, newshape, order) 中的 order 参数:
    • **'C'**(默认):行优先(类C语言)
    • **'F'**:列优先(类Fortran语言)
    • **'A'**:按原数组存储方式决定

示例:数组 [[0,1,2],[3,4,5]] reshape为(3,2):

  • 'C' 方式:[[0,1],[2,3],[4,5]]
  • 'F' 方式:[[0,4],[3,2],[1,5]]

六、数组的轴(axis)——核心难点

1. 基本概念

轴即维度,从0开始计数。二维数组中,0轴=行,1轴=列

2. 聚合计算

以 (4,3) 矩阵(4名同学对3款游戏的评分)为例:

  • 沿0轴聚合(每款游戏的总分):np.sum(score, axis=0) → 结果形状 (3,)
  • 沿1轴聚合(每位同学的总分):np.sum(score, axis=1) → 结果形状 (4,)

3. 多维数组的形状变化规律

形状为 (a, b, c) 的数组沿某轴聚合后:

  • axis=0 → (b, c)
  • axis=1 → (a, c)
  • axis=2 → (a, b)

4. 适用场景

axis 参数广泛用于 sum、max、min、mean、argmin、argmax 等聚合函数。


七、每课一练

问题:计算每位用户对三款游戏打分的平均分。

解答

# 方法一
np.average(interest_score, axis=1)

# 方法二
np.mean(interest_score, axis=1)

# 加权平均
np.average(interest_score, weights=weights, axis=1)

普通求平均时两者输出一致,np.average 还可用于加权平均。


八、小结

  1. NumPy 是Python科学计算的基础,与PyTorch Tensor知识融会贯通,常用于数据预处理和后处理。
  2. 重点掌握:使用 np.asarray 创建数组、数组属性(ndim、shape、dtype、size)的灵活使用、形状变化与数据类型转换。
  3. 轴的概念 在聚合函数中非常重要,建议从二维数组逐步推理到多维数组,理解不同轴方向上的聚合变化。


【声明】内容源于网络
0
0
知识代码AI
技术基底 机器视觉全栈 × 光学成像 × 图像处理算法 编程栈 C++/C#工业开发 | Python智能建模 工具链 Halcon/VisionPro工业部署 | PyTorch/TensorFlow模型炼金术 | 模型压缩&嵌入式移植
内容 403
粉丝 0
知识代码AI 技术基底 机器视觉全栈 × 光学成像 × 图像处理算法 编程栈 C++/C#工业开发 | Python智能建模 工具链 Halcon/VisionPro工业部署 | PyTorch/TensorFlow模型炼金术 | 模型压缩&嵌入式移植
总阅读6.6k
粉丝0
内容403