如何在pytorch中按第一维对张量进行排序?

Fer*_*nha 4 python sorting torch pytorch tensor

我有一个二维张量,我想像这个例子一样按第一维排序:

a = torch.FloatTensor(
   [[5, 5],
    [5, 3],
    [3, 5],
    [6, 4],
    [3, 7]])
Run Code Online (Sandbox Code Playgroud)

排序后我期望这个结果:

a = torch.FloatTensor(
   [[3, 5],
    [3, 7],
    [5, 3],
    [5, 5],
    [6, 4]])
Run Code Online (Sandbox Code Playgroud)

可以在pytorch中做到这一点吗?我知道可以在 numpy 中做到这一点,但我想使用火炬在 GPU 中做到这一点。

cos*_*iry 8

按第一列排序并使用索引对整个数组进行排序:

a[a[:, 0].sort()[1]]
Run Code Online (Sandbox Code Playgroud)

输出:

tensor([[3., 5.],
        [3., 7.],
        [5., 5.],
        [5., 3.],
        [6., 4.]])
Run Code Online (Sandbox Code Playgroud)

如果你真的需要它交错:

b = a[a[:, 1].sort()[1]]
b[b[:, 0].sort()[1]]
Run Code Online (Sandbox Code Playgroud)

输出:

tensor([[3., 5.],
        [3., 7.],
        [5., 3.],
        [5., 5.],
        [6., 4.]])
Run Code Online (Sandbox Code Playgroud)