python - 在 PyTorch 的张量中将一个数字范围内插到另一个数字范围内
问题描述
我正在尝试将一组数字 {0, 4, 6} 转换为连续的数字 {0, 1, 2}。目前我正在使用Scipy
的interp1d
功能。我的问题是我想更改张量的每个元素。有没有比将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
应该管用。如果你不想硬编码,你可以像你一样找到唯一的值,对它们进行排序,然后在循环中替换它们。
推荐阅读
- java - 突出显示在 android studio 中输入文本
- javascript - 从 JavaScript 中的对象中选取一些值
- redis - 有没有办法模拟 memcpy 将值存储到 redis 键?
- javascript - 如何让 chrome 使用更多的 CPU 资源
- sql - Spring MVC 如何与 mybatis 协同工作?
- python - 尝试构建逻辑解析器时出错
- android - 如何为 ZXing Scanner 创建和实现 Android CustomOverlay?
- json - 如何将 Firestore REST API 响应转换为普通 json?
- java - 在画布上绘制 LinearLayout 视图消失
- java - 如何解决 Android Studio 中的重新声明错误