假设我有关闭对角元素的批量坐标的pytorch张量,并且我想得到靠近原点的角的坐标。坐标为(x1,y1,x2,y2)形式。
a = ……
您可以迭代所有张量,并为每个张量计算到四个角的距离,并以最小距离拍摄角落。
import torch a = torch.tensor([[3,2,2,3], [1,1,2,2]]) c = torch.zeros(a.shape[0], 2) for idx, x in enumerate(a): d1 = x[0] ** 2 + x[1] ** 2 d2 = x[2] ** 2 + x[3] ** 2 d3 = x[0] ** 2 + x[3] ** 2 d4 = x[2] ** 2 + x[1] ** 2 dmin = min(d1, d2, d3, d4) if d1 == dmin: c[idx] = torch.tensor([x[0], x[1]]) elif d2 == dmin: c[idx] = torch.tensor([x[2], x[3]]) elif d3 == dmin: c[idx] = torch.tensor([x[0], x[3]]) elif d4 == dmin: c[idx] = torch.tensor([x[2], x[1]]) print(c) # tensor([[2., 2.], [1., 1.]])