stack(inputs, dim=) :沿着一个新维度对输入张量序列进行连接。 序列中所有的张量都应该为相同形状。
np.stack()
import numpy as np
a=np.array([i for i in range(24)]).reshape(3,4,2)
b=np.array([i for i in range(24,48)]).reshape(3,4,2)
c=np.array([i for i in range(48,72)]).reshape(3,4,2)
print(a)
print(b)
print(c)
new_array1=np.stack([a,b,c],axis=0)
print("new_array1:",new_array1,"shape1:",new_array1.shape)
new_array2=np.stack([a,b,c],axis=1)
print("new_array2:",new_array2,"shape1:",new_array2.shape)
new_array3=np.stack([a,b,c],axis=2)
print("new_array3:",new_array2,"shape3:",new_array3.shape)
[[[ 0 1]
[ 2 3]
[ 4 5]
[ 6 7]]
[[ 8 9]
[10 11]
[12 13]
[14 15]]
[[16 17]
[18 19]
[20 21]
[22 23]]]
[[[24 25]
[26 27]
[28 29]
[30 31]]
[[32 33]
[34 35]
[36 37]
[38 39]]
[[40 41]
[42 43]
[44 45]
[46 47]]]
[[[48 49]
[50 51]
[52 53]
[54 55]]
[[56 57]
[58 59]
[60 61]
[62 63]]
[[64 65]
[66 67]
[68 69]
[70 71]]]
new_array1: [[[[ 0 1]
[ 2 3]
[ 4 5]
[ 6 7]]
[[ 8 9]
[10 11]
[12 13]
[14 15]]
[[16 17]
[18 19]
[20 21]
[22 23]]]
[[[24 25]
[26 27]
[28 29]
[30 31]]
[[32 33]
[34 35]
[36 37]
[38 39]]
[[40 41]
[42 43]
[44 45]
[46 47]]]
[[[48 49]
[50 51]
[52 53]
[54 55]]
[[56 57]
[58 59]
[60 61]
[62 63]]
[[64 65]
[66 67]
[68 69]
[70 71]]]] shape1: (3, 3, 4, 2)
new_array2: [[[[ 0 1]
[ 2 3]
[ 4 5]
[ 6 7]]
[[24 25]
[26 27]
[28 29]
[30 31]]
[[48 49]
[50 51]
[52 53]
[54 55]]]
[[[ 8 9]
[10 11]
[12 13]
[14 15]]
[[32 33]
[34 35]
[36 37]
[38 39]]
[[56 57]
[58 59]
[60 61]
[62 63]]]
[[[16 17]
[18 19]
[20 21]
[22 23]]
[[40 41]
[42 43]
[44 45]
[46 47]]
[[64 65]
[66 67]
[68 69]
[70 71]]]] shape1: (3, 3, 4, 2)
new_array3: [[[[ 0 1]
[ 2 3]
[ 4 5]
[ 6 7]]
[[24 25]
[26 27]
[28 29]
[30 31]]
[[48 49]
[50 51]
[52 53]
[54 55]]]
[[[ 8 9]
[10 11]
[12 13]
[14 15]]
[[32 33]
[34 35]
[36 37]
[38 39]]
[[56 57]
[58 59]
[60 61]
[62 63]]]
[[[16 17]
[18 19]
[20 21]
[22 23]]
[[40 41]
[42 43]
[44 45]
[46 47]]
[[64 65]
[66 67]
[68 69]
[70 71]]]] shape3: (3, 4, 3, 2)
np.stack()和torch.stack()是一样的
torch.stack(tensors: Union[Tuple[Tensor, …], List[Tensor]], dim: _int=0, *, out: Option)
import torch
d=torch.randint(0,24,(3,4,2))
e=torch.randint(24,48,(3,4,2))
f=torch.randint(48,72,(3,4,2))
print(d)
print(e)
print(f)
new_tensor4=torch.stack([d,e,f],dim=0)
print("new_tensor4:",new_tensor4,"new_tensor4.shape:",new_tensor4.shape)
new_tensor5=torch.stack([d,e,f],dim=1)
print("new_tensor5:",new_tensor5,"new_tensor5.shape:",new_tensor5.shape)
new_tensor6=torch.stack([d,e,f],dim=2)
print("new_tensor6:",new_tensor6,"new_tensor6.shape:",new_tensor6.shape)
new_tensor7=torch.stack([d,e,f],dim=3)
print("new_tensor7:",new_tensor7,"new_tensor7.shape:",new_tensor7.shape)
tensor([[[ 0, 23],
[ 9, 13],
[ 2, 17],
[19, 22]],
[[13, 23],
[ 5, 15],
[10, 8],
[ 6, 12]],
[[20, 3],
[ 3, 13],
[15, 3],
[22, 22]]])
tensor([[[33, 37],
[46, 38],
[34, 42],
[40, 32]],
[[39, 30],
[46, 26],
[41, 33],
[37, 28]],
[[45, 31],
[46, 37],
[36, 27],
[41, 45]]])
tensor([[[48, 56],
[49, 67],
[71, 53],
[62, 71]],
[[54, 52],
[55, 48],
[69, 63],
[58, 63]],
[[57, 56],
[69, 71],
[68, 62],
[71, 56]]])
new_tensor4: tensor([[[[ 0, 23],
[ 9, 13],
[ 2, 17],
[19, 22]],
[[13, 23],
[ 5, 15],
[10, 8],
[ 6, 12]],
[[20, 3],
[ 3, 13],
[15, 3],
[22, 22]]],
[[[33, 37],
[46, 38],
[34, 42],
[40, 32]],
[[39, 30],
[46, 26],
[41, 33],
[37, 28]],
[[45, 31],
[46, 37],
[36, 27],
[41, 45]]],
[[[48, 56],
[49, 67],
[71, 53],
[62, 71]],
[[54, 52],
[55, 48],
[69, 63],
[58, 63]],
[[57, 56],
[69, 71],
[68, 62],
[71, 56]]]]) new_tensor4.shape: torch.Size([3, 3, 4, 2])
new_tensor5: tensor([[[[ 0, 23],
[ 9, 13],
[ 2, 17],
[19, 22]],
[[33, 37],
[46, 38],
[34, 42],
[40, 32]],
[[48, 56],
[49, 67],
[71, 53],
[62, 71]]],
[[[13, 23],
[ 5, 15],
[10, 8],
[ 6, 12]],
[[39, 30],
[46, 26],
[41, 33],
[37, 28]],
[[54, 52],
[55, 48],
[69, 63],
[58, 63]]],
[[[20, 3],
[ 3, 13],
[15, 3],
[22, 22]],
[[45, 31],
[46, 37],
[36, 27],
[41, 45]],
[[57, 56],
[69, 71],
[68, 62],
[71, 56]]]]) new_tensor5.shape: torch.Size([3, 3, 4, 2])
new_tensor6: tensor([[[[ 0, 23],
[33, 37],
[48, 56]],
[[ 9, 13],
[46, 38],
[49, 67]],
[[ 2, 17],
[34, 42],
[71, 53]],
[[19, 22],
[40, 32],
[62, 71]]],
[[[13, 23],
[39, 30],
[54, 52]],
[[ 5, 15],
[46, 26],
[55, 48]],
[[10, 8],
[41, 33],
[69, 63]],
[[ 6, 12],
[37, 28],
[58, 63]]],
[[[20, 3],
[45, 31],
[57, 56]],
[[ 3, 13],
[46, 37],
[69, 71]],
[[15, 3],
[36, 27],
[68, 62]],
[[22, 22],
[41, 45],
[71, 56]]]]) new_tensor6.shape: torch.Size([3, 4, 3, 2])
new_tensor7: tensor([[[[ 0, 33, 48],
[23, 37, 56]],
[[ 9, 46, 49],
[13, 38, 67]],
[[ 2, 34, 71],
[17, 42, 53]],
[[19, 40, 62],
[22, 32, 71]]],
[[[13, 39, 54],
[23, 30, 52]],
[[ 5, 46, 55],
[15, 26, 48]],
[[10, 41, 69],
[ 8, 33, 63]],
[[ 6, 37, 58],
[12, 28, 63]]],
[[[20, 45, 57],
[ 3, 31, 56]],
[[ 3, 46, 69],
[13, 37, 71]],
[[15, 36, 68],
[ 3, 27, 62]],
[[22, 41, 71],
[22, 45, 56]]]]) new_tensor7.shape: torch.Size([3, 4, 2, 3])