加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Numpy 数组高阶操作函数

发布时间:2023-07-03 09:23:57 所属栏目:教程 来源:
导读:Numpy 提供了一系列针对数组操作的高阶函数。其中一类比较常见的是数组的合并。

1. 数组的合并与堆叠
1.1 numpy.concatenate 函数
numpy.concatenate 函数用于沿指定轴连接两个或多个相同形状的数组。该函数的原
Numpy 提供了一系列针对数组操作的高阶函数。其中一类比较常见的是数组的合并。

1. 数组的合并与堆叠
1.1 numpy.concatenate 函数
numpy.concatenate 函数用于沿指定轴连接两个或多个相同形状的数组。该函数的原型如下:

numpy.concatenate((a1, a2, ...), axis=)
参数说明如下:

参数    说明
a1,a2 …    相同类型的数组序列
axis    连接数组的轴的方向,默认值为0
案例
创建大小为 2×2 的二维数组 a 和 b:

a = np.array([[,],[,]])b = np.array([[,],[,]])
查看数组:

print(数组a:)print(a)print(数组b:)print(b)
打印结果为:

数组a:[[ ]
 [ ]]数组b:[[ ]
 [ ]]
利用 concatenate 函数进行垂直方向的合并:

np.concatenate((a, b), axis=)out:array([[, ],   [, ],   [, ],   [, ]])
上述语句实现了:沿着 axis=0(对于二维数组,显示为垂直)方向合并,合并的结果在垂直方向的维数扩充到 4,整个结果的数组大小为 4×2。

利用 concatenate 函数进行水平方向的合并:

np.concatenate((a, b), axis=)out:array([[, , , ],   [, , , ]])
上述语句实现了:沿着 axis=1(对于二维数组,显示为水平)方向合并,合并的结果在水平方向的维数扩充到 4,整个结果的数组大小为 1×4。

通过观察上述过程,可以发现:concatenate 可以实现数组沿着某一轴向进行合并,合并后数组的维度保持不变。

案例
numpy.concatenate 函数可以一次性拼接多个数组:

np.concatenate((a, b, a, b), axis=)out:array([[, , , , , , , ],   [, , , , , , , ]])
concatenate 函数可以接收不定长的数组序列,并按照指定的轴进行合并。

1.2 numpy.stack函数
numpy.stack 函数沿指定轴连接数组序列,该函数的原型如下:

numpy.stack((a1, a2, ...), axis=)
参数说明如下:

参数    说明
a1,a2 …    相同类型的数组序列
axis    连接数组的轴的方向,默认值为0
案例
仍然指定拼接方向为 axis=0 方向,观察与 concatenate 函数的区别:

np.stack((a, b), axis=)
该语句实现了把数据 a 和 b 在 axis=0(最外层)增加一层,进行堆叠:

array([[[, ],[, ]],   [[, ],[, ]]])
堆叠的结果为三维数组,其中 axis=0 方向(最外层)的组成元素分别对应为 a 和 b。

案例
指定拼接方向为 axis=1 方向,观察与 concatenate 函数的区别:

np.stack((a, b), axis=)
该语句实现了把数据 a 和 b 在 axis=1 增加一层,再进行堆叠:

array([[[, ],[, ]],   [[, ],[, ]]])
具体堆叠过程可以按照拆解为如下步骤:

数组 a 和  b分别由 2×2 扩充为 2×1×2,在 axis=1 的维度实现了扩充;

在扩充的轴上进行堆叠,即在 axis=1 的轴上进行堆叠。

1.3 numpy.hstack 函数
对于二维数组,在水平方向进行堆叠,但是数组的维度保持不变。函数效果等价于numpy.concatenate((a1,  a2, …), axis=1)。

案例
利用 hstack 函数合并数组 a 和 b:

np.hstack((a,b))out:array([[, , , ],   [, , , ]])
上述效果与 np.concatenate((a, b), axis=1) 完全一致。

1.4 numpy.vstack函数
对于二维数组,在垂直方向进行堆叠,但是数组的维度保持不变。函数效果等价于numpy.concatenate((a1,  a2, …), axis=0)。

案例
利用 hstack 函数合并数组 a 和 b:

np.vstack((a,b))out:array([[, ],   [, ],   [, ],   [, ]])
上述效果与np.concatenate((a, b), axis=0)完全一致。

2. 小结
本节讲述了数组合并与堆叠的几种常用方法,其中concatenate函数与stack函数需要在使用中指定具体的计算方向,而vstack和hstack则默认了合并方向,使用过程中注意区分。

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章