Python 如何用每个条目的适当排名替换张量的条目?

Python 如何用每个条目的适当排名替换张量的条目?,python,tensorflow,pytorch,ranking,tensor,Python,Tensorflow,Pytorch,Ranking,Tensor,假设我有以下张量: >> i = 3 >> j = 5 >> k = 2 >> sor = torch.randn(i,j,k) >> sor Out[20]: tensor([[[ 0.5604, -0.9675], [-1.0953, -0.5615], [ 0.4250, -0.9176], [-1.6188, -1.0217], [-0.0778, 1

假设我有以下张量:

>> i = 3
>> j = 5
>> k = 2
>> sor = torch.randn(i,j,k)

>> sor
Out[20]: 
tensor([[[ 0.5604, -0.9675],
         [-1.0953, -0.5615],
         [ 0.4250, -0.9176],
         [-1.6188, -1.0217],
         [-0.0778,  1.9407]],

        [[-0.1034, -0.7925],
         [-0.2955,  0.8058],
         [-0.5349,  1.1040],
         [ 1.1240,  0.8249],
         [ 0.0827, -1.2471]],

        [[ 0.5924,  0.4777],
         [-2.4640, -1.9527],
         [-0.4519,  0.4788],
         [-0.2308, -0.2368],
         [-1.6786,  0.1360]]])
假设对于每个固定的
i
j
,我想计算元素在
k
上的数值秩,并用这些秩替换张量
sor
的元素。例如,从上面的示例中,我想将条目
[0.5604,-0.9675]
,即
sor[0,0,:]
,更改为
[1,2]
,因为
0.5604>-0.9675


谢谢,

我想您正在寻找:

torch.argsort(sor,dim=2)
出[]:
张量([[1,0],,
[0, 1],
[1, 0],
[0, 1],
[0, 1]],
[[1, 0],
[0, 1],
[0, 1],
[1, 0],
[1, 0]],
[[1, 0],
[0, 1],
[0, 1],
[1, 0],
[0, 1]]])

我想您正在寻找:

torch.argsort(sor,dim=2)
出[]:
张量([[1,0],,
[0, 1],
[1, 0],
[0, 1],
[0, 1]],
[[1, 0],
[0, 1],
[0, 1],
[1, 0],
[1, 0]],
[[1, 0],
[0, 1],
[0, 1],
[1, 0],
[0, 1]]])