Numpy数组重塑、合并与拆分实战指南

月亮慢半拍
月亮慢半拍
发布时间:2026-10-12| 3人浏览过
原创

本文深入解析Numpy中数组重塑、合并与拆分的核心操作。通过reshape()实现维度转换,利用-1自动推断形状;对比flatten()与ravel()在内存副本上的差异;掌握concatenate()按轴合并数组,以及split()按指定轴向拆分数组。

数组重塑:从一维到多维

Numpy提供了强大的数组重塑功能,其中reshape()函数是最常用的工具。它允许我们将一维数组转换为二维或多维数组,或者改变现有数组的维度结构。

在使用reshape()时,有一个非常实用的技巧:在参数中使用-1。这表示该维度的大小将由数据总量自动推断。例如,如果我们知道总元素数量,但不确定具体要分成几行或几列,使用-1可以避免手动计算,减少出错概率。

data.reshape((2,5))
data.reshape((2,-1))

扁平化操作:flatten()与ravel()的区别

将多维数组转换为一维数组的过程称为扁平化(flattening)或散开(raveling)。Numpy提供了两种主要方法:flatten()和ravel()。虽然它们的结果看起来相同,但在内存管理上存在关键差异。

  • data.ravel():通常不会创建源数据的副本,而是返回一个视图(view)。这意味着对返回数组的修改可能会影响原始数组,效率更高。
  • data.flatten():总是返回数据的一个副本(copy)。对返回数组的修改不会影响原始数组,但会占用额外的内存空间。
data.ravel() # 不会产生源数据的副本
data.flatten() # 总是返回数据的副本

数组合并:concatenate()的应用

当需要将多个数组组合成一个更大的数组时,np.concatenate()是首选方法。该函数接受一个数组列表作为第一个参数,并通过axis参数指定合并的轴向。

  • axis=0:表示按行合并(垂直方向)。
  • axis=1:表示按列合并(水平方向)。

以下示例展示了如何将两个二维数组按行合并:

arr1 = np.array([[1,2,3], [4,5,6]])
arr2 = np.array([[7,8,9], [10,11,12]])
data = np.concatenate([arr1, arr2], axis=0) # axis参数指明合并的轴向,0表示按行,1表示按列

数组拆分:split()函数的使用

与合并相反,np.split()函数用于将数组拆分为多个子数组。该函数的参数包括:

  • data:待拆分的源数组。
  • [1]:指定拆分的索引点,例如[1]表示在索引1处拆分。
  • axis:指定拆分的轴向,默认为0(按行拆分)。

通过合理设置这些参数,可以灵活地将数组按照需求拆分为不同大小的子集。

总结

掌握Numpy中的数组重塑、合并与拆分操作,能够极大地提升数据处理效率。通过灵活运用reshape()、flatten()、ravel()、concatenate()和split()等函数,可以应对各种复杂的数组操作场景。

以上就是Numpy中数组重塑、合并与拆分方法的详细内容,更多关于Numpy数组操作、Python数据处理、机器学习数据预处理、Numpy基础教程、数据分析工具的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。