Python 如何使用scipy.interpolate中的griddata

Python 如何使用scipy.interpolate中的griddata,python,numpy,scipy,interpolation,mayavi,Python,Numpy,Scipy,Interpolation,Mayavi,我有一个三列(x像素,y像素,z值)的数据,有一百万行。数据来自图像,并且存在重复的z值。现在我需要做一个曲面图。这是一个完美的例子。但现在输出图像为空。有人能查一下密码吗 import numpy as np from enthought.mayavi import mlab from scipy.interpolate import griddata x,y,z = np.loadtxt('test.csv',delimiter=',',usecols=(0,1,2),unpack=True

我有一个三列(x像素,y像素,z值)的数据,有一百万行。数据来自图像,并且存在重复的z值。现在我需要做一个曲面图。这是一个完美的例子。但现在输出图像为空。有人能查一下密码吗

import numpy as np
from enthought.mayavi import mlab
from scipy.interpolate import griddata
x,y,z = np.loadtxt('test.csv',delimiter=',',usecols=(0,1,2),unpack=True) 
xi,yi = np.mgrid[0:3000:3000j, 0:3000:3000j]
zi = griddata((x, y), z, (xi, yi),method='linear')
mlab.surf(xi,yi,zi)
mlab.show()

我无法在没有数据的情况下检查代码,但我怀疑问题在于您正在使用默认的
fill_value=nan
作为
griddata
参数,因此如果您的网格点超出了(x,y)点的空间,那么网格中就存在nan,mlab可能无法处理(matplotlib不容易实现)。尝试设置
fill\u value=0
或其他合适的实数。

为什么
0:3000:3000j
?它不应该是
0:3000:1
0:3000:1
同样没有意义。可能
0:3000
?这两种方法是相同的。它们中的任何一种都使zi为空。@psuedoDust-
mgrid
解释作为s传入的复数tep作为输出数组中的步数。例如,
np.mgrid[:3:3j]
产生
[0,1.5,3]
,而
np.mgrid[:3]
将产生
[0,1,2]