python教程,如何理解numpy的ndarray数组堆叠相关函数?
发布于 作者:苏南大叔 来源:程序如此灵动~
官方的说法是堆叠数组,苏南大叔的个人理解是数组合并,本文中涉及的这些操作的区别就在于堆叠的方式不同。涉及的方法有:.hstack()、.vstack()、.dstack()、.column_stack()、.row_stack()、.concatenate()。

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验文章。测试环境:win10,python@3.11.0,numpy@1.24.2,pandas@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)输出的结果是这样的:

情况二,类型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)输出的结果是这样的:

情况三,类型d,[丢数据]堆叠
最后一种情况是.dstack(),数据会有所丢失,不知道这个方法会用到什么地方。
测试代码如下:
s7 = np.dstack((a, b, c))输出的结果是这样的:

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