Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >三个NumPy数组合并函数的使用

三个NumPy数组合并函数的使用

作者头像
触摸壹缕阳光
发布于 2022-05-25 06:00:26
发布于 2022-05-25 06:00:26
2K00
代码可运行
举报
运行总次数:0
代码可运行

在 numpy 中合并数组比较常用的方法有 concatenate、vstack 和 hstack。在介绍这三个方法之前,首先创建几个不同维度的数组:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np

# 创建一维数组
x = np.array([1, 2, 3])
y = np.array([3, 2, 1])
z = np.array([666, 666, 666])

# 创建二维数组
A = np.array([[1, 2, 3], 
             [4, 5, 6]])
B = np.array([[100, 200, 300], 
             [400, 500, 600]])

concatenate

numpy.concatenate((a1, a2, ...), axis = 0) 其中:

  • a1, a2,....: 待合并的数组
  • axis: 沿着数组合并的维度,默认为 0(对于二维数组来说,默认沿着行的方向进行合并)

这里需要注意 a1, a2,... 待合并的数组除了待合并的维度,其余维度上的值必须相等。二维数组(矩阵)有两个 axis,一个 axis = 0(行方向),一个 axis = 1(列方向),如果是多维数组依次类推。比如:

  • 形状为 (2, 3) 和 (1, 3) 的两个二维数组可以沿着 axis = 0 的方向进行合并,合并的结果为 (3, 3);
  • 形状为 (2, 3) 和 (2, 3) 的两个二维数组既可以沿着 axis = 0 的方向也可以沿着 axis = 1 的方向合并;
  • 形状为 (2, 1) 和 (1, 3) 的两个二维数组既不可以沿着 axis = 0 的方向也可以沿着 axis = 1 的方向合并;

合并多个一维数组:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print(np.concatenate((x, y)))
'''
array([1, 2, 3, 3, 2, 1])
'''

print(np.concatenate((x, y, z)))
'''
array([  1,   2,   3,   3,   2,   1, 666, 666, 666])
'''

合并多个二维数组:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print(np.concatenate((A, B), axis = 0))
'''
array([[  1,   2,   3],
       [  4,   5,   6],
       [100, 200, 300],
       [400, 500, 600]])
'''

axis = 0,即沿着行方向进行合并。这种合并二维数组的场景非常多,比如对于输入特征为二维数组的情况下,需要补充新的样本,可以将二维数组沿着行方向进行合并,有时会将行称为样本维度。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print(np.concatenate((A, B), axis = 1))
'''
array([[  1,   2,   3, 100, 200, 300],
       [  4,   5,   6, 400, 500, 600]])
'''

axis = 1,即沿着列方向进行合并。比如对于输入特征为二维数组的情况下,需要为输入补充一些新的特征,可以将二维数组沿着列方向进行合并,有时会将列称为特征维度。

待合并的数组必须拥有相同的维度,如果不同维度则会抛出 ValueError 异常。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print(np.concatenate([A, z]))
'''
ValueError: all the input arrays must have same number of dimensions, but the array at index 0 has 2 dimension(s) and the array at index 1 has 1 dimension(s)
'''

这是因为 A 的形状为 (2, 3),而 z 的形状为 (3,),如果想要让两个数组进行合并,可以将 z 的形状转换为 (1, 3),这样我们就可以沿着 axis = 0 的方向进行合并。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print(np.concatenate([A, z.reshape(1, -1)]))
'''
array([[  1,   2,   3],
       [  4,   5,   6],
       [666, 666, 666]])
'''

需要注意拼接后的结果是一个新的数组。

vstack 和 hstack

我们在实际开发中,比较常用的操作就是对二维或者三维数组进行行和列的合并操作,所以 numpy 为我们提供了更加方便的 vstack 和 hstack。vstack 将数组沿着行的方向进行合并操作,而 hstack 将数组沿着列的方向进行合并操作。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print(np.vstack((A, B)))
'''
array([[  1,   2,   3],
       [  4,   5,   6],
       [100, 200, 300],
       [400, 500, 600]])
'''

print(np.hstack((A, B)))
'''
array([[  1,   2,   3, 100, 200, 300],
       [  4,   5,   6, 400, 500, 600]])
'''

上面的操作我们同样可以使用 concatenate 实现,换句话说 vstack 和 hstack 是 concatenate 更为具体的操作。

不过需要注意,当处理一维数组时:

  • vstack 会把形状为 (N, ) 的一维数组转换为 (1, N) 的二维数组,然后进行后续的合并操作
  • hstack 的处理方式和 concatenate 一样,二维数组和一维数组合并会抛出ValueError 异常,而两个一维数组合并会合并成新的一维数组,比如合并形状分别为 (3, ) 和 (2, ) 的两个一维数组,合并的结果为形状为 (5, ) 的一维数组。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print(np.vstack((x,y)))
'''
array([[1, 2, 3],
       [3, 2, 1]])
'''

print(np.vstack((A, z)))
'''
array([[  1,   2,   3],
       [  4,   5,   6],
       [666, 666, 666]])
'''

使用 vstack 沿着行方向合并 A 和 z 两个数组,没有抛出异常,这是因为 vstack 会将一维数组转换为二维数组。

针对一维数组,hstack 的处理方式和 concatenate 一样。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print(np.hstack((x, y)))
'''
array([1, 2, 3, 3, 2, 1])
'''

print(np.hstack((A, z)))
'''
ValueError: all the input arrays must have same number of dimensions, but the array at index 0 has 2 dimension(s) and the array at index 1 has 1 dimension(s)
'''
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI机器学习与深度学习算法 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
机器学习入门 3-6 Numpy数组(和矩阵)的合并与分割
在 numpy 中合并数组比较常用的方法有 concatenate、vstack 和 hstack。在介绍这三个方法之前,首先创建几个不同维度的数组:
触摸壹缕阳光
2022/05/25
7910
机器学习入门 3-6 Numpy数组(和矩阵)的合并与分割
numpy的堆叠数组函数stack()、vstack()、dstack()、concatenate()函数详解
在做图像和nlp数组数据处理的时候,经常要实现两个数组堆叠或者连接的功能,这经常用numpy库的一些函数实现,常用于堆叠数组的numy函数如下:
嵌入式视觉
2022/09/05
3K0
NumPy 数组迭代与合并详解
NumPy 数组迭代是访问和处理数组元素的重要方法。它允许您逐个或成组地遍历数组元素。
小万哥
2024/05/14
1510
NumPy 数组迭代与合并详解
详解Numpy中的数组拼接、合并操作
Numpy中提供了concatenate,append, stack类(包括hsatck、vstack、dstack、row_stack、column_stack),r_和c_等类和函数用于数组拼接的操作。
狼啸风云
2020/07/29
11.4K0
详解Numpy中的数组拼接、合并操作
numpy中的hstack()、vstack()、stack()、concatenate()函数详解
本文主要介绍一下numpy中的几个常用函数,包括hstack()、vstack()、stack()、concatenate()。
石晓文
2018/12/27
6.4K0
如何连接两个二维数字NumPy数组?
Python 是一种通用且功能强大的编程语言,广泛用于科学计算、数据分析和机器学习。使Python对这些领域如此有用的关键库之一是NumPy。NumPy提供了强大的工具来处理数组,这对于许多科学计算任务至关重要。在本文中,我们将探讨如何使用 Python 连接两个二维 NumPy 数组。
很酷的站长
2023/08/11
3250
如何连接两个二维数字NumPy数组?
numpy的基本操作
http://blog.csdn.net/pipisorry/article/details/39496831
用户7886150
2021/01/02
1K0
Python中numpy数组的拼接、合并
np.append() np.concatenate() np.stack() np.hstack() np.vstack() np.dstack() 其中最泛用的是第一个和第二个。第一个可读性好,比较灵活,但是占内存大。第二个则没有内存占用大的问题。
全栈程序员站长
2022/07/02
3.4K0
数据科学 IPython 笔记本 9.4 NumPy 数组的基础
Python 中的数据操作几乎与 NumPy 数组操作同义:即使是像 Pandas 这样的新工具也是围绕 NumPy 数组构建的。本节将介绍几个示例,使用 NumPy 数组操作来访问数据和子数组,以及拆分,重塑和连接数组。
ApacheCN_飞龙
2022/12/02
1.6K0
numpy中数组操作的相关函数
在numpy中,有一系列对数组进行操作的函数,在使用这些函数之前,必须先了解以下两个基本概念
生信修炼手册
2020/06/17
2.2K0
3-Numpy数组
首先让我们讨论一些有用的数组属性。我们将从定义三个随机数组开始,分别是一维,二维和三维数组。我们将使用NumPy的随机数生成器,我们将使seed设置初始值,以确保每次运行此代码时都生成相同的随机数组:
用户1418372
2020/03/20
1.2K0
【深度学习】 NumPy详解(二):数组操作(索引和切片、形状操作、转置操作、拼接操作)
Python本身是一种伟大的通用编程语言,在一些流行的库(numpy,scipy,matplotlib)的帮助下,成为了科学计算的强大环境。本系列将介绍Python编程语言和使用Python进行科学计算的方法,主要包含以下内容:
Qomolangma
2024/07/29
2090
【深度学习】 NumPy详解(二):数组操作(索引和切片、形状操作、转置操作、拼接操作)
盘一盘 Python 系列 2 - NumPy (下)
重塑 (reshape) 和打平 (ravel, flatten) 这两个操作仅仅只改变数组的维度
用户5753894
2019/07/05
2.6K0
盘一盘 Python 系列 2 - NumPy (下)
Python之numpy数组学习(二)
前言 前面我们学习了numpy库的简单应用,今天来学习下比较重要的如何处理数组。 处理数组形状 下面可将多维数组转换成一维数组时的情形。 利用以下函数处理数组的形状: 拆解:ravel()函数可将多维数组变成一维数组。 拉直(Flatten):flatten()函数与ravel()相同,但是,flatten()返回的是真实的数组,需要分配新的内存空间;而ravel()函数返回的只是数组的视图。 用元组指定数组形状:除reshape()函数外,还可以用元组来定义数组的形状。 转置:在线性代数中,矩阵的转置操作
CDA数据分析师
2018/02/05
1.1K0
Python之numpy数组学习(二)
AI入门之数据处理(Numpy指南)
python中的数据操作基本都用numpy来做,在做深度学习的过程一定也绕不过numpy。这篇分几个部分介绍numpy · numpy array 的基本属性,包括 shape, size, dim, data type · 通过 index 获取 numpy array 的数据 · 分割 numpy array,获取 sub array · 变换 numpy array 的维度 · 合并 numpy array,合并多个数组
PhoenixZheng
2019/12/04
1.1K0
小白眼中的AI之~Numpy基础
引入一下 Numpy模块, Numpy的数组使用可以查看一下帮助文档, Numpy的 array数组类型必须是一致的(后面会讲)
逸鹏
2018/07/16
1K0
numpy(一)
np.ones((3,5),dtype=float) #创建3*5的二维全为1的数组
py3study
2020/01/16
4530
Python学习笔记之NumPy模块——超详细(安装、数组创建、正态分布、索引和切片、数组的复制、维度修改、拼接、分割...)
NumPy(Numerical Python) 是科学计算基础库,它提供了大量科学计算相关功能。比如数据统计,随机数生成等。其提供最核心类型为多维数组类型(ndarray),支持大量的维度数组与矩阵运算,NumPy支持向量处理ndarray对象,提高程序运行速度。
爱喝兽奶的熊孩子
2024/04/10
10.1K0
Python学习笔记之NumPy模块——超详细(安装、数组创建、正态分布、索引和切片、数组的复制、维度修改、拼接、分割...)
简约而不简单|值得收藏的Numpy小抄表(含主要语法、代码)
NumPy(Numeric Python)提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。专为进行严格的数字处理而产生。多为很多大型金融公司使用,以及核心的科学计算组织如:Lawrence Livermore,NASA用其处理一些本来使用C++,Fortran或Matlab等所做的任务。
黄博的机器学习圈子
2020/07/14
4750
简约而不简单|值得收藏的Numpy小抄表(含主要语法、代码)
Python NumPy数组堆叠与组合
在科学计算和数据处理过程中,数组的组合和堆叠是一个常见的操作。NumPy 提供了多种方法来处理数组的堆叠和组合,例如水平堆叠、垂直堆叠、深度堆叠以及基于指定轴的拼接。通过这些方法,可以轻松地对数组进行复杂的数据操作,从而满足不同场景的需求。
sergiojune
2024/12/31
1760
Python NumPy数组堆叠与组合
推荐阅读
相关推荐
机器学习入门 3-6 Numpy数组(和矩阵)的合并与分割
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验