一. torch.cat( )
1. 用法:
按照指定的维度,将两个terson数据拼接在一起;
2. 实例:
improt torch
A = torch.tensor(np.array([[1,2,3],[4,5,6]])) #2×3的张量
tensor([[1, 2, 3],
[4, 5, 6]])
B = torch.tensor(np.array([[7,8],[10,11]])) #2×2的张量
tensor([[ 7, 8],
[10, 11]])
C = torch.cat([A, B],dim=1) #按照张量维度1(列)进行拼接,维度变为2×5
tensor([[ 1, 2, 3, 7, 8],
[ 4, 5, 6, 10, 11]])
D = torch.tensor(np.array([[2,3,4],[10,11,12],[5,6,7]])) #3×3的张量
tensor([[ 2, 3, 4],
[10, 11, 12],
[ 5, 6, 7]])
E = torch.cat([A,D], dim=0) #按照张量维度0(行)进行拼接,维度变为5×3
tensor([[ 1, 2, 3],
[ 4, 5, 6],
[ 2, 3, 4],
[10, 11, 12],
[ 5, 6, 7]])
两个张量A和B,分别是2行3列,2行2列。即他们都是2维张量。因为只有两维,这样在用torch.cat拼接的时候就有两种拼接方式:按行拼接和按列拼接。即所谓的维数0和维数1.
C=torch.cat((A,B),1)就表示按维数1(列)拼接A和B,也就是横着拼接,A左B右。此时需要注意:行数必须一致,即维数0数值要相同,这里都是2行,方能行对齐。拼接后的C的第1维是两个维数1数值和,即2+3=5.
E=torch.cat((A,D),0)就表示按维数0(行)拼接A和B,也就是竖着拼接,A上B下。此时需要注意:列数必须一致,即维数0数值要相同,这里都是3列,方能列对齐。拼接后的C的第0维是两个维数0数值和,即2+3=5.
注:使用torch.cat((A,B),dim)时,除拼接维数dim数值可不同外其余维数数值需相同,方能对齐。
二. np.concatenate()
1 .用法:
np.concatenate 是numpy中对array进行拼接的函数。
2. 实例:
import numpy as np
#创建2×3的数组A,B
A = np.array([[1,2,3],[4,5,6]])
B = np.array([[7,8,9],[10,11,12]])
A:[[1 2 3]
[4 5 6]]
B:[[ 7 8 9]
[10 11 12]]
con = np.concatenate([A,B],axis=0) #按照0维度拼接,得到4×3的数组
[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]]
con1 = np.concattenate([A,B],AXIS=1) #按照1维度拼接,得到2×6的数组
[[ 1 2 3 7 8 9]
[ 4 5 6 10 11 12]]
axis参数为指定按照哪个维度进行拼接,上述的例子中A为[2,3] B为[2,3],设置axis=0则代表着按照第一维度进行拼接,拼接后的尺寸为[4,3]除了第一维度的尺寸发生变化,其他维度不变,同时也说明,必须保证其他维度的尺寸是能对的上的,假设A为[5,4],B为[5,3],在这里如果还设置axis=1的话,则会报错,因为x1和x2的第二维度尺寸不相等,无法拼接。