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

np.interp返回常量数组异常,求问题排查方案

问题根源

np.interp函数要求第二个参数xp必须是单调递增的数组,否则插值结果会不符合预期(甚至返回常量)。你的代码中:

  • r0是从2到215的递增数组
  • 计算得到的f是单调递减的数组(因为r0越大,f表达式里各项的分母越大,整体值越小)

当xp(也就是f)递减时,np.interp的内部搜索逻辑会失效,最终返回错误的常量结果。

解决方法

因为f和r0是严格单调的(f递减、r0递增),只需将f和r0同时反转,让f变成递增数组,就能满足np.interp的参数要求:

r0 = np.linspace(2, 215, 1000)
f = 8.9*np.sqrt(4.8e9/(r0**14) + 3e8/(r0**6) + 1.4e6/(r0**2.3))
ds = np.array([3950, 1837, 1347, 900])
# 反转f和r0,使xp变为递增
result = np.interp(ds, f[::-1], r0[::-1])
print(result)
逻辑验证
  • 反转后的f[::-1]是从最小值到最大值的递增数组
  • 对应的r0[::-1]是从215到2的递减数组
  • 此时np.interp可以正确匹配ds中每个值在f[::-1]中的位置,插值得到对应的r0值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 15:55:39