我在scipy.interpolate的griddata函数中遇到问题。我在沙盒中使用griddata开发了一个快速插值器,然后一旦有了自己喜欢的插值器,便将该函数复制到我开发的更大模型中。这是函数:

def windGrid(*sensors):
    """Creates grids of wind speed components"""
    xb = [0, 0, num_x, num_x]
    yb = [0, num_y, num_y, 0]

    xs = [s.lng for s in sensors]
    ys = [s.lat for s in sensors]
    us = [s.u for s in sensors]
    vs = [s.v for s in sensors]

    ub, vb = boundaryWeighting(*sensors)

    x = xb+xs
    y = yb+ys
    u = ub+us
    v = vb+vs

    x_grid, y_grid = np.mgrid[0:num_x, 0:num_y]

    zx = griddata((x, y), u, (x_grid, y_grid))
    zy = griddata((x, y), v, (x_grid, y_grid))

   return zx, zy


boundaryWeighting()函数仅返回网格角的风速分量,以便可以在其中进行插值。现在这是一个奇怪的部分...当我在沙箱中调用griddata时(即周围没有其他独立功能),它可以正常工作。但是,在将其复制到的python文件中调用时,它将返回此错误:

TypeError: griddata() takes at least 5 arguments (3 given)


根据Scipy文档,griddata接受5个参数,但后两个参数是可选的。我尝试插入可选参数(即方法和fill_val),但随后出现此错误:

TypeError: griddata() got an unexpected keyword argument 'method'


因此,似乎python解释器在不同的python文件中引用了不同版本的griddata。

这就是为什么这没有意义的原因:
1.两个文件都在同一目录中,并且使用相同的解释器
2.两个文件都引用相同的Scipy版本0.12.0

我已经检查了所有变量/函数分配,并且没有重叠。关于为什么会发生这种情况的任何线索?

谢谢

最佳答案

您的一个文件中是否有类似from matplotlib.pylab import *的东西?您可能会与matplotlibgriddata版本发生名称空间冲突。

关于python - 调用scipy griddata时发生TypeError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18705141/

10-12 19:46