You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于浮点索引对字典中扭矩数据插值的预构建方法咨询

用预构建工具实现浮点索引的线性插值

你可以直接用Python生态里的numpy.interp或者scipy.interpolate.interp1d来处理,完全不用手动计算上下整数索引,代码简洁还能复用。

方法1:用numpy的interp(轻量线性插值)

numpy.interp专门做一维线性插值,适配你的场景:

import numpy as np

# 你的原始数据
j = {"46": [[88.0, 95.3], [86.1, 93.4], [84.2, 91.3], [82.8, 89.7], [80.8, 87.8]]}
data_46 = j["46"]

# 提取索引序列和两个数值序列
x_indices = np.arange(len(data_46))  # 生成[0,1,2,3,4]
y1 = np.array([item[0] for item in data_46])  # [88.0, 86.1, 84.2, 82.8, 80.8]
y2 = np.array([item[1] for item in data_46])  # [95.3, 93.4, 91.3, 89.7, 87.8]

# 目标浮点索引
target_index = 1.85

# 直接计算两个数值的插值
interp_y1 = np.interp(target_index, x_indices, y1)
interp_y2 = np.interp(target_index, x_indices, y2)

print(f"索引1.85对应的第一个值:{interp_y1:.2f}")
print(f"索引1.85对应的第二个值:{interp_y2:.2f}")

运行结果:

索引1.85对应的第一个值:84.57
索引1.85对应的第二个值:91.63

方法2:用scipy的interp1d(支持多种插值方式)

如果需要更复杂的插值(比如三次插值),或者要一次性处理多个目标索引,用scipy.interpolate.interp1d更灵活:

from scipy.interpolate import interp1d
import numpy as np

j = {"46": [[88.0, 95.3], [86.1, 93.4], [84.2, 91.3], [82.8, 89.7], [80.8, 87.8]]}
data_46 = j["46"]

x_indices = np.arange(len(data_46))
y1 = np.array([item[0] for item in data_46])
y2 = np.array([item[1] for item in data_46])

# 创建插值函数,可选'linear'(线性)、'cubic'(三次)等
f_y1 = interp1d(x_indices, y1, kind='linear')
f_y2 = interp1d(x_indices, y2, kind='linear')

# 单个目标索引
target_index = 1.85
interp_y1 = f_y1(target_index)
interp_y2 = f_y2(target_index)

# 也可以一次性处理多个索引,比如[1.2, 1.85, 2.5]
# multi_interp_y1 = f_y1([1.2, 1.85, 2.5])

print(f"索引1.85对应的第一个值:{interp_y1:.2f}")
print(f"索引1.85对应的第二个值:{interp_y2:.2f}")

核心优势

  • 无需手动拆分浮点索引的整数/小数部分,函数自动完成上下界查找与插值计算
  • 代码可封装成通用函数,换数据只需传入新的数据集和目标索引,复用性强
  • 支持批量处理多个索引,效率远高于手动循环计算

内容的提问来源于stack exchange,提问作者PW1990

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 07:40:20