Nump数组的拼接详细教程

numpy数组的拼接

拼接或连接Numpy中的数组主要由np.concatenate,np.vstack,np.hstack,np.dstack四个方法来实现实现。

np.concatenate()函数

np.concatenate()是numpy库中的一个函数,用于将多个数组沿指定轴连接起来。要注意拼接的数组维度一致。其语法如下:

numpy.concatenate((a1, a2, ...), axis=0, out=None)

参数说明:

  • (a1, a2, ...): 要连接的数组序列,可以是元组,也可以是列表。
  • axis: 指定沿哪个轴连接数组,默认为0,即沿第一个维度(行)连接。如果设为1,则沿第二个维度(列)连接。
  • out: 可选参数,指定输出结果的数组。如果不指定,则会新创建一个数组来存储结果。

例如,有x,y两个一维数组,使用np.concatenate()拼接:

import numpy as np


x = np.array([1,2,3])
y = np.array([3,2,1])
con = np.concatenate([x,y]) #这里的参数可以使用列表,也可以使用元组np.concatenate((x,y))
print(con)    

运行结果:

[1, 2, 3, 3, 2, 1]

也可以一次使用两个以上的数组:

z = [88,88,88]
con = np.concatenate([x,y,z])
print(con) 

运行结果:

[ 1,  2,  3,  3,  2,  1, 88, 88, 88]

np.concatenate()默认是从第一个维度拼接(即沿着行顺序连接),如下所示:

grid1 = np.array([[1,2,3],[4,5,6]])
grid2 = np.array([[8,8,8]])
con = np.concatenate([grid1,grid2])
print(con) 

运行结果:

[[1, 2, 3] [4, 5, 6] [8, 8, 8]]

要从第二个维度拼接(即沿着列顺序连接),可以使用axis = 1,如下所示:

grid1 = np.array([[1,2,3],[4,5,6]])
grid2 = np.array([[8,8],[9,9]])
np.concatenate([grid1,grid2], axis = 1)
print(con) 

运行结果:

[[1, 2, 3, 8, 8]
 [4, 5, 6, 9, 9]]

需要注意的是,沿列顺序拼接,行个数需保持一致。同理,沿行顺序拼接,数组的列个数须保持一致。

np.vstack()函数

np.vstack()用于沿着行顺序堆叠数组构成一个新的数组。其语法如下:

numpy.vstack((tup,))

参数说明:

  • (tup,): 要堆叠的数组序列。

例如,将x和grid两个数组行顺序

x = np.array([1,2,3])
grid = np.array([[4,5,6],[7,8,9]])
#行顺序拼接
con = np.vstack([x,grid])
print(con)

运行结果:

[[1 2 3]
 [4 5 6]
 [7 8 9]]

np.hstack()函数

np.hstack()用于沿着列顺序堆叠数组构成一个新的数组。其语法如下:

numpy.hstack((tup,))

参数说明:

  • (tup,): 要堆叠的数组序列。
x = np.array([[9,9],[8,8]])
grid = np.array([[6],[6]])
#列顺序拼接
con = np.hstack([x,grid])
print(con)
[[9 9 6]
 [8 8 6]]

沿着固定的维度处理数组时,使用np.vstack()和np.hstack()更方便。

np.dstack()

np.dstack()

用于按深度方向(沿着第三个维度)堆叠数组构成一个新的数组。其语法如下:

numpy.dstack((tup,))

参数说明:

  • (tup,): 要堆叠的数组序列。

以下分别展示了将一维、二维、三维的数组拼接成一个三维数组:

# 一维
x = np.array([1,2,3])
y = np.array([4,5,6])
con = np.dstack((x,y))
print(con)

运行结果:

[[[1 4]
  [2 5]
  [3 6]]]
# 二维
x = np.array([[1,2,3,4],[4,3,2,1]])
y = np.array([[5,6,7,8],[8,7,6,5]])
con = np.dstack((x,y))
print(con)

运行结果:

[[[1 5]
  [2 6]
  [3 7]
  [4 8]]

 [[4 8]
  [3 7]
  [2 6]
  [1 5]]]
# 三维
x = np.array([
                [
                    [1,2,3],
                    [3,2,1]
                ],
                [
                    [4,5,6],
                    [6,5,4]
                ],
                [
                    [7,8,9],
                    [9,8,7]
                ]
            ])
y = np.array([
                [
                    [10,11,12],
                    [12,11,10]
                ],
                [
                    [13,14,15],
                    [15,14,13]
                ],
                [
                    [16,17,18],
                    [18,17,16]
                ]
            ])
con = np.dstack([x,y])
print(con)

运行结果:

[[[ 1  2  3 10 11 12]
  [ 3  2  1 12 11 10]]

 [[ 4  5  6 13 14 15]
  [ 6  5  4 15 14 13]]

 [[ 7  8  9 16 17 18]
  [ 9  8  7 18 17 16]]]

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值