Hi,

I have 2 tensors like below:

```
hc1 = torch.randn(5,1, 1, 1)
hc2 = torch.randn(5,1, 1, 1)
```

I want to concatenate these 2 tensors as hc3 and then sort hc3 based on amounts of hc1.

How could I do it?

Thanks

Hi,

I have 2 tensors like below:

```
hc1 = torch.randn(5,1, 1, 1)
hc2 = torch.randn(5,1, 1, 1)
```

I want to concatenate these 2 tensors as hc3 and then sort hc3 based on amounts of hc1.

How could I do it?

Thanks

Could you post a simple example with some values?

You could concatenate these tensor using `out = torch.cat((hc1, hc2), dim=dim)`

, however I’m not sure, how you would like to sort the tensors.

Dear ptrblck,

Thanks for your reply. Sure. I simplify my question with changing the dimensions of tensors to 2. Suppose we have these 2 tensors:

```
hc1 = tensor([[30],
[20],
[10],
[50],
[40]])
hc2=tensor([[1],
[2],
[3],
[4],
[5]])
```

1, 2, 3, 4, 5 are, subsequently, related to 30, 20, 10, 50, 40.

After sorting hc1 we would have 10, 20, 30, 40, 50 and 3, 2, 1, 5, 4. Because hc1 and hc2 are 1 to 1.

I thought that I should concatenate them as hc3 and sort it based on hc1.

I hope that I explained my question as well as possible.

Thanks

Hi,

You can get the permutation by calling `perm = hc1.argsort(dim=0).squeeze()`

.

In your example it returns `tensor([2, 1, 0, 4, 3])`

Then you can rearrange hc2 with this permutation : `hc2_rearranged = hc2[perm]`

.

In your example it returns

```
tensor([[3.],
[2.],
[1.],
[5.],
[4.]])
```

You can always concatenate those afterwards

Thanks for your reply.

I can not understand how to have sorted hc1 while you achieved sorted indices of hc1? Is there any way?

Thanks

Dear Phan_Phan,

Oh, how funny question I asked. It just needs to write:

```
print(hc1[perm])
```

Many thanks