方法一:
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