Numpy数组拼接总结

 方法一:

Numpy中使用级联函数concatenate()来连接两个数组,可选参数为连接轴(连接维度) axis,axis默认为0,即默认在第0维上进行元素的连接。

  • 级联函数使两数组指定维axis上的对应位置的元素相连接,若指定axis大小而时同维度上元素个数对应不相同时将会报错!
  • 指定不同axis所得到的新数组形状不同

注:Numpy中维度从第0维开始

 方法二:

使用堆栈函数stack()来连接数组,可选参数仍为连接轴axis,axis默认大小为0。

  • 使用堆栈函数stack()连接数组与级联函数concatenate() 的区别在于stack()函数使两数组的元素按连接轴交替连接
  • 指定不同的axis得到的数组形状相同

例子:

# -*- coding: utf-8 -*-
import numpy as np

arr1 = np.array([[[1, 2], [3, 4]],[[5, 6], [7, 8]]])

arr2 = np.array([[[9, 10], [11, 12]],[[13, 14], [15, 16]]])

"""级联拼接"""
arr = np.concatenate((arr1, arr2))               #默认在第0维上进行数组的连接

arr_1 = np.concatenate((arr1, arr2), axis=1)   #axis指定拼接的维度,axis=1表示在第1维上对数组进行拼接

arr_2 = np.concatenate((arr1, arr2), axis=2)   #axis指定拼接的维度,axis=2表示在第2维上对数组进行拼接

"""堆栈拼接"""
arr_3 = np.stack((arr1, arr2))                    #默认在第0维上进行数组的连接
arr_4 = np.stack((arr1, arr2),axis=1)             #在第1维上进行数组的连接
arr_5 = np.stack((arr1, arr2),axis=2)             #在第2维上进行数组的连接
arr_6 = np.stack((arr1, arr2),axis=3)             #在第3维上进行数组的连接

"""其他方法"""
arr_7 = np.hstack((arr1, arr2))                   #按行堆叠,相当于级联axis=1的方法

arr_8 = np.vstack((arr1, arr2))                   #按列堆叠,相当于级联axis=0的方法

arr_9 = np.dstack((arr1, arr2))                   #按深度堆叠,相当于级联axis=2的方法

print("原始数组:")
print(arr1)
print("数组类型:",arr1.shape)
print()
print(arr2)
print("数组类型:",arr2.shape)
print("--------------------------------")
print()

print("使用concatenate函数连接")
print()
print("默认在第0维上进行数组的连接")
print(arr)
print("数组类型:",arr.shape)
print("--------------------------------")
print()


print("--------------------------------")
print()
print("在第1维上进行数组的连接")
print(arr_1)
print("数组类型:",arr_1.shape)
print("--------------------------------")
print()


print("在第2维上进行数组的连接")
print(arr_2)
print("数组类型:",arr_2.shape)
print("--------------------------------")
print()

print("使用stack函数连接")
print()

print("默认在第0维上进行数组的连接")
print(arr_3)
print("数组类型:",arr_3.shape)
print("--------------------------------")
print()



print("在第1维上进行数组的连接")
print(arr_4)
print("数组类型:",arr_4.shape)
print("--------------------------------")
print()


print("在第2维上进行数组的连接")
print(arr_5)
print("数组类型:",arr_5.shape)
print("--------------------------------")
print()


print("在第3维上进行数组的连接")
print(arr_6)
print("数组类型:",arr_6.shape)
print("--------------------------------")
print()


print("按行堆叠")
print(arr_7)
print("数组类型:",arr_7.shape)
print("--------------------------------")
print()

print("按列堆叠")
print(arr_8)
print("数组类型:",arr_8.shape)
print("--------------------------------")
print()

print("按高(深)堆叠")
print(arr_9)
print("数组类型:",arr_9.shape)
print("--------------------------------")
print()

运行结果:


原始数组:
[[[1 2]
  [3 4]]

 [[5 6]
  [7 8]]]
数组类型: (2, 2, 2)

[[[ 9 10]
  [11 12]]

 [[13 14]
  [15 16]]]
数组类型: (2, 2, 2)
--------------------------------

使用concatenate函数连接

默认在第0维上进行数组的连接
[[[ 1  2]
  [ 3  4]]

 [[ 5  6]
  [ 7  8]]

 [[ 9 10]
  [11 12]]

 [[13 14]
  [15 16]]]
数组类型: (4, 2, 2)
--------------------------------

--------------------------------

在第1维上进行数组的连接
[[[ 1  2]
  [ 3  4]
  [ 9 10]
  [11 12]]

 [[ 5  6]
  [ 7  8]
  [13 14]
  [15 16]]]
数组类型: (2, 4, 2)
--------------------------------

在第2维上进行数组的连接
[[[ 1  2  9 10]
  [ 3  4 11 12]]

 [[ 5  6 13 14]
  [ 7  8 15 16]]]
数组类型: (2, 2, 4)
--------------------------------

使用stack函数连接

默认在第0维上进行数组的连接
[[[[ 1  2]
   [ 3  4]]

  [[ 5  6]
   [ 7  8]]]


 [[[ 9 10]
   [11 12]]

  [[13 14]
   [15 16]]]]
数组类型: (2, 2, 2, 2)
--------------------------------

在第1维上进行数组的连接
[[[[ 1  2]
   [ 3  4]]

  [[ 9 10]
   [11 12]]]


 [[[ 5  6]
   [ 7  8]]

  [[13 14]
   [15 16]]]]
数组类型: (2, 2, 2, 2)
--------------------------------

在第2维上进行数组的连接
[[[[ 1  2]
   [ 9 10]]

  [[ 3  4]
   [11 12]]]


 [[[ 5  6]
   [13 14]]

  [[ 7  8]
   [15 16]]]]
数组类型: (2, 2, 2, 2)
--------------------------------

在第3维上进行数组的连接
[[[[ 1  9]
   [ 2 10]]

  [[ 3 11]
   [ 4 12]]]


 [[[ 5 13]
   [ 6 14]]

  [[ 7 15]
   [ 8 16]]]]
数组类型: (2, 2, 2, 2)
--------------------------------

按行堆叠
[[[ 1  2]
  [ 3  4]
  [ 9 10]
  [11 12]]

 [[ 5  6]
  [ 7  8]
  [13 14]
  [15 16]]]
数组类型: (2, 4, 2)
--------------------------------

按列堆叠
[[[ 1  2]
  [ 3  4]]

 [[ 5  6]
  [ 7  8]]

 [[ 9 10]
  [11 12]]

 [[13 14]
  [15 16]]]
数组类型: (4, 2, 2)
--------------------------------

按高(深)堆叠
[[[ 1  2  9 10]
  [ 3  4 11 12]]

 [[ 5  6 13 14]
  [ 7  8 15 16]]]
数组类型: (2, 2, 4)
--------------------------------


Process finished with exit code 0

 

 
  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

daimashiren

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值