我遇到了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
我已经检查了所有变量/功能分配,并且没有重叠。关于为什么会发生这种情况的任何线索?
由于
答案 0 :(得分:2)
您的某个文件中是否有from matplotlib.pylab import *
之类的内容?您可能会与matplotlib
griddata
版本的{{1}}进行命名空间冲突。