我在3d中有一个点列表,我想在3d网格上进行插值。
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')
我得到了一个nans的载体:
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]],....
我在这里做错了什么?
答案 0 :(得分:2)
我不知道xi,yi,zi
值是多少,但最有可能超出coords
定义的域。如果使用meshgrid
生成网格,请注意数组的顺序:
在输入长度为
M
,N
和P
的3-D情况下,(N, M, P)
索引和{{‘xy’
的输出形状为(M, N, P)
1}}用于‘ij’
索引。
试试这个:
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))
,了解np.prod(g.shape)
中从g
输出griddata()
的所有点$.fn.wrapInTag = function(opts) {
var tag = opts.tag || 'strong',
words = opts.words || [],
regex = RegExp(words.join('|'), 'gi'),
replacement = '<strong>$&</strong>';
return this.html(function() {
return $(this).text().replace(regex, replacement);
});
};
$('p').wrapInTag({
tag: 'em',
words: ['#boldworld']
});
中的点数是如何有效的。