Python scipy griddata插值返回一个填充nan的向量

Python scipy griddata插值返回一个填充nan的向量,python,numpy,scipy,Python,Numpy,Scipy,我有一个三维点列表,我想在三维网格上插值 coords = array([[ 8.33399963, 12.94800186, 15.22500038], [ 8.57299995, 13.90000153, 14.14700031],...) 我有网格x、y、z坐标,它们与numpy.meshgrid一起用于创建网格: xi,yi,zi = np.meshgrid(bbox[:,0],bbox[:,1],bbox[:,2]) 然后当我尝试执行插值时: gridda

我有一个三维点列表,我想在三维网格上插值

coords = array([[  8.33399963,  12.94800186,  15.22500038],
       [  8.57299995,  13.90000153,  14.14700031],...)
我有网格x、y、z坐标,它们与
numpy.meshgrid
一起用于创建网格:

xi,yi,zi = np.meshgrid(bbox[:,0],bbox[:,1],bbox[:,2])
然后当我尝试执行插值时:

griddata(coords,np.random.choice([.1,1,2],size=len(coords)),(xi,yi,zi),method='linear')
我得到了一个n的向量:

array([[[ nan,  nan,  nan,  nan,  nan,  nan,  nan,  nan],
        [ nan,  nan,  nan,  nan,  nan,  nan,  nan,  nan],
        [ nan,  nan,  nan,  nan,  nan,  nan,  nan,  nan],
        [ nan,  nan,  nan,  nan,  nan,  nan,  nan,  nan],
        [ nan,  nan,  nan,  nan,  nan,  nan,  nan,  nan],
        [ nan,  nan,  nan,  nan,  nan,  nan,  nan,  nan],
        [ nan,  nan,  nan,  nan,  nan,  nan,  nan,  nan],
        [ nan,  nan,  nan,  nan,  nan,  nan,  nan,  nan]],....

我做错了什么?

我不知道xi、yi、zi的值是什么,但它们很可能超出了
coords
定义的范围。如果使用
meshgrid
生成网格,请注意数组的顺序:

在输入长度为
M
N
p
的三维情况下,对于
'xy'
索引,输出形状为
(N,M,p)
,对于
'ij'
索引,输出形状为
(M,N,p)

试试这个:

In [61]: coords = 20 * np.random.random((200, 3)) - 1

In [62]: xi, yi, zi = np.meshgrid(np.arange(coords[:, 0].min()+2, coords[:,0].max()-2), np.arange(coords[:, 1].min()+2, coords[:,1
    ...: ].max()-2), np.arange(coords[:, 2].min()+2, coords[:,2].max()-2), indexing='ij')

In [63]: griddata(coords,np.random.choice([.1,1,2],size=len(coords)),(xi.astype(np.float), yi.astype(np.float), zi.astype(np.float
    ...: )),method='linear')
您仍将获得一些
nan
值,其中点对函数采样较差,但大多数值都已定义


另一种可能是,您刚刚看到的第一个“平面”可能主要包含
nan
。请尝试
np.sum(np.isfinite(g))
查看所有点中的may点如何有效
np.prod(g.shape)
其中
g
griddata()的thr输出谢谢,我的错误似乎是:
np.meshgrid(bbox[:,0],bbox[:,1],bbox[:,2])
。相反,我应该像这样使用linspace或arange:
np.linspace(np.min(bbox[:,0])、np.max(bbox[:,0]))
,等等。