Numpy浮点索引插值的名称及对应实现函数问询
插值操作相关问题解答
该操作的标准名称
这个插值操作的标准称呼是线性插值独热编码,也可以被称为相邻索引线性权重分配,核心逻辑是将连续浮点索引的权重按照距离反比拆分到其相邻的两个整数索引位,总权重和为1,和线性插值的核心计算规则完全匹配。
Numpy对应实现方案
Numpy没有专门针对这个场景封装的现成单函数,但可以通过基础的数组操作快速实现,参考代码如下:
import numpy as np def linear_interpolate_onehot(float_idx, vec_len=3): result = np.zeros(vec_len) # 拆分整数部分和小数部分 floor_idx = int(np.floor(float_idx)) fractional = float_idx - floor_idx # 边界越界处理 if floor_idx < 0: result[0] = 1.0 elif floor_idx >= vec_len - 1: result[-1] = 1.0 else: result[floor_idx] = 1 - fractional result[floor_idx + 1] = fractional return result
你可以直接测试该函数,输出结果和你给出的所有示例完全匹配:
- 输入
0.5,输出[0.5, 0.5, 0. ] - 输入
1,输出[0., 1., 0.] - 输入
2,输出[0., 0., 1.] - 输入
1.5,输出[0. , 0.5, 0.5] - 输入
1.9,输出[0. , 0.1, 0.9]
内容的提问来源于stack exchange,提问作者truvaking
相关产品推荐
相关产品推荐

