我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

官方的说法是堆叠数组,苏南大叔的个人理解是数组合并,本文中涉及的这些操作的区别就在于堆叠的方式不同。涉及的方法有:.hstack().vstack().dstack().column_stack().row_stack().concatenate()

苏南大叔:python教程,如何理解numpy的ndarray数组堆叠相关函数? - ndarray-stack
python教程,如何理解numpy的ndarray数组堆叠相关函数?(图4-1)

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验文章。测试环境:win10python@3.11.0numpy@1.24.2pandas@1.5.3

操作对象

这里定义了三个ndarray变量,ndarray变量的形状都是一样的。代码中是对三个ndarray变量进行了合并堆叠拼接,但是也可以两个一起合并,或者更多个一起合并,增加参数到方法的第一个tuple变量里面即可。

import numpy as np

a = np.array([["苏", "南"], ["大", "叔"]])
b = np.array([["技", "术"], ["博", "客"]])
c = np.array([["号", "好"], ["豪", "號"]])

情况一,类型h,横向堆叠

和横向堆叠有关的函数是:.hstack().column_stack().concatenate(axis=1)

测试代码如下:

s1 = np.hstack((a, b, c))
s2 = np.column_stack((a, b, c))
s3 = np.concatenate((a, b, c), axis=1)

输出的结果是这样的:

苏南大叔:python教程,如何理解numpy的ndarray数组堆叠相关函数? - 横向堆叠
python教程,如何理解numpy的ndarray数组堆叠相关函数?(图4-2)

情况二,类型v,竖向堆叠

和横向堆叠有关的函数是:.vstack().row_stack().concatenate(axis=0)

测试代码如下:

s4 = np.vstack((a, b, c))
s5 = np.row_stack((a, b, c))
s6 = np.concatenate((a, b, c), axis=0)

输出的结果是这样的:

苏南大叔:python教程,如何理解numpy的ndarray数组堆叠相关函数? - 竖向堆叠
python教程,如何理解numpy的ndarray数组堆叠相关函数?(图4-3)

情况三,类型d,[丢数据]堆叠

最后一种情况是.dstack(),数据会有所丢失,不知道这个方法会用到什么地方。

测试代码如下:

s7 = np.dstack((a, b, c))

输出的结果是这样的:

苏南大叔:python教程,如何理解numpy的ndarray数组堆叠相关函数? - dstack丢数据
python教程,如何理解numpy的ndarray数组堆叠相关函数?(图4-4)

总结

不想再细节上分析了,头疼,所以就这样草草结案吧。哈哈哈,大家自己研究吧。更多烧脑python文章,请点击:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python