首页 > 解决方案 > 在 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

标签: pythonpytorchtensor

解决方案


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

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

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


推荐阅读