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]]])