1

我遇到了 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

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

谢谢

4

1 回答 1

2

你的文件中有类似的东西from matplotlib.pylab import *吗?您可能会遇到matplotlibgriddata.

于 2013-09-09T19:33:57.260 回答