在 PyTorch 的张量中将一个数字范围内插到另一个数字范围

Interpolate one range of numbers to another in a tensor in PyTorch

我正在尝试将一组数字 {0, 4, 6} 转换为连续的数字 {0, 1, 2}。 目前我正在使用 Scipyinterp1d 函数。我的问题是我想更改张量的每个元素。有没有比将 interp1d 函数广播到张量中的每个元素更好的方法?如果不是,我怎样才能实现自定义函数的广播

目前我正在做以下事情:

>>> a = torch.tensor([[0, 6, 4],
                      [4, 0, 4]])
>>> unique_values = np.unique(a)
>>> interpolator = interp1d(unique_values, range(len(unique_values)))
>>> interpolator(a[0, 1])
>>> 2

如果只想替换,为什么要插值?

a[a==6]=2
a[a==4]=1

应该可以。如果你不想硬编码,你可以像你一样找到唯一的值,对它们进行排序,然后循环替换它们。