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

SciPy三维插值结果保存加载时报TypeError问题求助

报错根因

你使用np.save()存储RegularGridInterpolator实例时,由于该实例不属于numpy原生数组类型,numpy会自动将其包装为一个0维object类型的numpy数组写入文件。加载时直接拿到的是这个包裹了插值器的0维数组,而非插值器本身,因此无法直接作为函数调用,触发'numpy.ndarray' object is not callable报错,和allow_pickle参数是否开启无关。

直接修复方案

加载后调用.item()方法取出0维数组中包裹的插值器实例即可,仅需修改loadInterpolation函数的加载代码:

def loadInterpolation():
    print('Loading Interpolation...')
    # 加载后调用.item()取出实际的插值器对象
    interpolationFunc = np.load('interpolation.npy', allow_pickle=True).item()
    zeroVal = interpolationFunc([0,0,0])
    oneVal = interpolationFunc([1,1,1])
    print('Interpolated function @ (0,0,0): ' + str(zeroVal))
    print('Interpolated function @ (1,1,1): ' + str(oneVal))
    return 0

注意:原测试代码未导入numpy,运行前需要补充import numpy as np语句。

可选优化方案

如果存储的是纯Python对象,直接使用Python标准库的pickle模块读写更直观,可避免numpy的自动包装问题:

  • 保存侧代码替换:
import pickle
with open('interp.pkl', 'wb') as f:
    pickle.dump(my_interpolating_function, f)
  • 加载侧代码替换:
import pickle
with open('interp.pkl', 'rb') as f:
    interpolationFunc = pickle.load(f)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:54:04