hstack and column_stack in PyTorch
Super Kai (Kazuya Ito)
Posted on July 14, 2024
*Memos:
hstack() can get the 1D or more D horizontally(column-wisely) stacked tensor of zero or more elements from the one or more 0D or more D tensors of zero or more elements as shown below:
*Memos:
-
hstack()
can be used with torch but not with a tensor. - The 1st argument with
torch
istensors
(Required-Type:tuple
orlist
oftensor
ofint
,float
,complex
orbool
). *Basically, the size of tensors must be the same. - There is
out
argument withtorch
(Optional-Default:None
-Type:tensor
): *Memos:-
out=
must be used. -
My post explains
out
argument.
-
import torch
tensor1 = torch.tensor(2)
tensor2 = torch.tensor(7)
tensor3 = torch.tensor(4)
torch.hstack(tensors=(tensor1, tensor2, tensor3))
# tensor([2, 7, 4])
tensor1 = torch.tensor([2, 7, 4])
tensor2 = torch.tensor([8, 3, 2])
tensor3 = torch.tensor([5, 0, 8])
torch.hstack(tensors=(tensor1, tensor2, tensor3))
# tensor([2, 7, 4, 8, 3, 2, 5, 0, 8])
tensor1 = torch.tensor([[2, 7, 4], [8, 3, 2]])
tensor2 = torch.tensor([[5, 0, 8], [3, 6, 1]])
tensor3 = torch.tensor([[9, 4, 7], [1, 0, 5]])
torch.hstack(tensors=(tensor1, tensor2, tensor3))
# tensor([[2, 7, 4, 5, 0, 8, 9, 4, 7],
# [8, 3, 2, 3, 6, 1, 1, 0, 5]])
tensor1 = torch.tensor([[2., 7., 4.], [8., 3., 2.]])
tensor2 = torch.tensor([[5., 0., 8.], [3., 6., 1.]])
tensor3 = torch.tensor([[9., 4., 7.], [1., 0., 5.]])
torch.hstack(tensors=(tensor1, tensor2, tensor3))
# tensor([[2., 7., 4., 5., 0., 8., 9., 4., 7.],
# [8., 3., 2., 3., 6., 1., 1., 0., 5.]])
tensor1 = torch.tensor([[2.+0.j, 7.+0.j, 4.+0.j],
[8.+0.j, 3.+0.j, 2.+0.j]])
tensor2 = torch.tensor([[5.+0.j, 0.+0.j, 8.+0.j],
[3.+0.j, 6.+0.j, 1.+0.j]])
tensor3 = torch.tensor([[9.+0.j, 4.+0.j, 7.+0.j],
[1.+0.j, 0.+0.j, 5.+0.j]])
torch.hstack(tensors=(tensor1, tensor2, tensor3))
# tensor([[2.+0.j, 7.+0.j, 4.+0.j, 5.+0.j, 0.+0.j,
# 8.+0.j, 9.+0.j, 4.+0.j, 7.+0.j],
# [8.+0.j, 3.+0.j, 2.+0.j, 3.+0.j, 6.+0.j,
# 1.+0.j, 1.+0.j, 0.+0.j, 5.+0.j]])
tensor1 = torch.tensor([[True, False, True], [False, True, False]])
tensor2 = torch.tensor([[False, True, False], [True, False, True]])
tensor3 = torch.tensor([[True, False, True], [False, True, False]])
torch.hstack(tensors=(tensor1, tensor2, tensor3))
# tensor([[True, False, True, False, True, False, True, False, True],
# [False, True, False, True, False, True, False, True, False]])
tensor1 = torch.tensor([[[2, 7, 4]]])
tensor2 = torch.tensor([])
tensor3 = torch.tensor([[[5, 0, 8]]])
torch.hstack(tensors=(tensor1, tensor2, tensor3))
# tensor([[[2., 7., 4.],
# [5., 0., 8.]]])
column_stack() can get the 2D or more D horizontally stacked tensor of zero or more elements from the one or more 0D or more D tensors of zero or more elements as shown below:
*Memos:
-
column_stack()
can be used withtorch
but not with a tensor. - The 1st argument with
torch
istensors
(Required-Type:tuple
orlist
oftensor
ofint
,float
,complex
orbool
). *Basically, the size of tensors must be the same. - There is
out
argument withtorch
(Optional-Default:None
-Type:tensor
): *Memos:-
out=
must be used. -
My post explains
out
argument.
-
import torch
tensor1 = torch.tensor(2)
tensor2 = torch.tensor(7)
tensor3 = torch.tensor(4)
torch.column_stack(tensors=(tensor1, tensor2, tensor3))
# tensor([[2, 7, 4]])
tensor1 = torch.tensor([2, 7, 4])
tensor2 = torch.tensor([8, 3, 2])
tensor3 = torch.tensor([5, 0, 8])
torch.column_stack(tensors=(tensor1, tensor2, tensor3))
# tensor([[2, 8, 5], [7, 3, 0], [4, 2, 8]])
tensor1 = torch.tensor([[2, 7, 4], [8, 3, 2]])
tensor2 = torch.tensor([[5, 0, 8], [3, 6, 1]])
tensor3 = torch.tensor([[9, 4, 7], [1, 0, 5]])
torch.column_stack(tensors=(tensor1, tensor2, tensor3))
# tensor([[2, 7, 4, 5, 0, 8, 9, 4, 7],
# [8, 3, 2, 3, 6, 1, 1, 0, 5]])
tensor1 = torch.tensor([[2., 7., 4.], [8., 3., 2.]])
tensor2 = torch.tensor([[5., 0., 8.], [3., 6., 1.]])
tensor3 = torch.tensor([[9., 4., 7.], [1., 0., 5.]])
torch.column_stack(tensors=(tensor1, tensor2, tensor3))
# tensor([[2., 7., 4., 5., 0., 8., 9., 4., 7.],
# [8., 3., 2., 3., 6., 1., 1., 0., 5.]])
tensor1 = torch.tensor([[2.+0.j, 7.+0.j, 4.+0.j],
[8.+0.j, 3.+0.j, 2.+0.j]])
tensor2 = torch.tensor([[5.+0.j, 0.+0.j, 8.+0.j],
[3.+0.j, 6.+0.j, 1.+0.j]])
tensor3 = torch.tensor([[9.+0.j, 4.+0.j, 7.+0.j],
[1.+0.j, 0.+0.j, 5.+0.j]])
torch.column_stack(tensors=(tensor1, tensor2, tensor3))
# tensor([[2.+0.j, 7.+0.j, 4.+0.j, 5.+0.j, 0.+0.j,
# 8.+0.j, 9.+0.j, 4.+0.j, 7.+0.j],
# [8.+0.j, 3.+0.j, 2.+0.j, 3.+0.j, 6.+0.j,
# 1.+0.j, 1.+0.j, 0.+0.j, 5.+0.j]])
tensor1 = torch.tensor([[True, False, True], [False, True, False]])
tensor2 = torch.tensor([[False, True, False], [True, False, True]])
tensor3 = torch.tensor([[True, False, True], [False, True, False]])
torch.column_stack(tensors=(tensor1, tensor2, tensor3))
# tensor([[True, False, True, False, True, False, True, False, True],
# [False, True, False, True, False, True, False, True, False]])
tensor1 = torch.tensor([[]])
tensor2 = torch.tensor([8])
tensor3 = torch.tensor([[]])
torch.column_stack(tensors=(tensor1, tensor2, tensor3))
# tensor([[8.]])
💖 💪 🙅 🚩
Super Kai (Kazuya Ito)
Posted on July 14, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.