深入理解NumPy数组堆叠与分割操作

 更新时间:2026年05月07日 09:16:19   作者:亜恵恵阿由  
本文深入探讨了NumPy库中数组的堆叠和分割操作,包括水平方向堆叠、垂直方向堆叠、深度方向堆叠以及列堆叠与行堆叠,文章也涉及了数组的分割操作,包括水平方向分割、垂直方向分割和深度方向分割,感兴趣的可以了解一下

背景简介

在数据分析和机器学习中,处理多维数据是一项基础而关键的技能。NumPy作为Python中用于科学计算的核心库,提供了丰富的数组操作功能,其中数组的堆叠和分割是常用的两种操作。通过堆叠,我们可以将多个数组合并为一个更大的数组;通过分割,我们可以将一个数组分解为多个较小的数组。本文将详细介绍NumPy中数组堆叠与分割的原理和方法,并通过实例加深理解。

水平方向堆叠 hstack()

水平方向堆叠,通过 np.concatenate() 函数并设置 axis=1 来实现。对于二维数组,其在水平方向上的堆叠要求除了堆叠轴(即列方向)以外的其他维度尺寸必须相同。例如:

arr1 = np.ones(shape=(2,2))
arr2 = np.zeros(shape=(2,3))
np.concatenate((arr1, arr2), axis=1)

结果将是一个形状为 (2, 5) 的二维数组。

垂直方向堆叠 vstack()

垂直方向堆叠通过 np.vstack() 函数实现。其要求参与堆叠的数组在垂直方向(即行方向)的尺寸相同,而其他维度可以不一致。例如:

arr2 = np.ones(shape=(2,3))
arr3 = np.zeros(shape=(3,3))
np.vstack((arr2, arr3))

结果将是一个形状为 (5, 3) 的二维数组。

深度方向堆叠 dstack()

深度方向堆叠对应的方法为 np.dstack() ,它可以将一系列数组在第三维度进行堆叠。例如,对于图像数据的RGB通道堆叠,可以实现如下:

red = np.arange(0,9).reshape(3,3)
green = np.arange(9,18).reshape(3,3)
blue = np.arange(18,27).reshape(3,3)
np.dstack((red, green, blue))

结果将是一个形状为 (3, 3, 3) 的三维数组。

列堆叠与行堆叠

np.column_stack() 用于按列方向堆叠一维数组,对于二维数组,其效果与 np.hstack() 相同。而 np.row_stack() 则用于按行方向堆叠,效果与 np.vstack() 相同。例如:

one = np.arange(3)
two = 2 * one
np.column_stack((one, two))

结果将是一个形状为 (3, 2) 的二维数组。

数组的分割操作

NumPy提供了数组的分割操作,包括水平方向分割(hsplit)、垂直方向分割(vsplit)和深度方向分割(dsplit)。分割操作是堆叠操作的逆过程,允许我们将一个数组分割为多个子数组。例如:

array1 = np.arange(16.0).reshape(4,4)
np.hsplit(array1, 2)

结果将是一个包含两个数组的列表,每个数组形状为 (4, 2)

总结与启发

NumPy数组的堆叠与分割是数据处理中不可或缺的操作。通过本文的学习,我们了解了如何在不同方向上对数组进行堆叠与分割,以及它们的使用场景和注意事项。掌握这些操作将极大地提升我们处理多维数据的效率和灵活性。

了解和掌握NumPy中的这些高级操作,不仅能够帮助我们更好地组织和处理数据,还能为后续的机器学习模型的构建和训练打下坚实的基础。熟练使用NumPy数组的堆叠与分割功能,可以使我们在数据科学领域更加得心应手。

到此这篇关于深入理解NumPy数组堆叠与分割操作的文章就介绍到这了,更多相关NumPy数组堆叠与分割操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python代码实现下载Odoo18在线文档并生成markdown文档

    Python代码实现下载Odoo18在线文档并生成markdown文档

    本文介绍了一个Odoo18在线文档下载工具,通过Python脚本自动爬取Odoo18中文文档并转换为PDF格式,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下
    2026-04-04
  • Python代理抓取并验证使用多线程实现

    Python代理抓取并验证使用多线程实现

    这里没有使用队列只是采用多线程分发对代理量不大的网页还行但是几百几千性能就很差了,感兴趣的朋友可以了解下,希望对你有所帮助
    2013-05-05
  • python多线程互斥锁与死锁

    python多线程互斥锁与死锁

    这篇文章主要介绍了python多线程互斥锁与死锁,多线程间的资源竞争下文我们就以task1(),task2()两个函数为例,分别将对全局变量num加一重复一千万次循环,具有一定得参考价值,需要的小伙伴可以参考一下
    2022-02-02
  • pycharm打开chrome自动退出错误的解决方法

    pycharm打开chrome自动退出错误的解决方法

    这篇文章主要给大家介绍了关于pycharm打开chrome自动退出错误的解决方法,文中通过实例代码以及图文将解决的办法介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • 使用Python对EXCEL数据的预处理

    使用Python对EXCEL数据的预处理

    这篇文章主要介绍了使用Python处理EXCEL基础操作篇2,如何使用Python对EXCEL数据的预处理,文中提供了解决思路和部分实现代码,一起来看看吧
    2023-03-03
  • Python后台开发Django的教程详解(启动)

    Python后台开发Django的教程详解(启动)

    这篇文章主要介绍了Python后台开发Django(启动),本文给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-04-04
  • Python读取含url图片链接的txt文档方法小结

    Python读取含url图片链接的txt文档方法小结

    这篇文章主要为大家详细介绍了三种Python读取含url图片链接的txt文档方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-04-04
  • Python的pygame安装教程详解

    Python的pygame安装教程详解

    Pygame是跨平台Pyth,Pygame 作者是 Pete Shinners, 协议为 GNU Lesser General Public License。这篇文章主要介绍了Python的pygame安装教程,需要的朋友可以参考下
    2020-02-02
  • python爬虫-模拟微博登录功能

    python爬虫-模拟微博登录功能

    这篇文章主要介绍了python爬虫-模拟微博登录功能,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • PyTorch中常见损失函数的使用详解

    PyTorch中常见损失函数的使用详解

    损失函数,又叫目标函数,是指计算机标签值和预测值直接差异的函数,本文为大家整理了PyTorch中常见损失函数的简单解释和使用,希望对大家有所帮助
    2023-06-06

最新评论