擅长:python、mysql、java
<p>好吧,当我回答自己的问题时,我觉得很傻,但是我在原始库的文档中发现了我的错误:</p>
<p><a href="https://github.com/JohannesBuchner/regulargrid" rel="noreferrer">https://github.com/JohannesBuchner/regulargrid</a></p>
<p><code>points</code>应该是一个数组列表,指定点沿每个轴的间距。</p>
<p>例如,要采用上述单位立方体,我应该设置:</p>
<pre><code>pts = ( np.array([0,1.]), )*3
</code></pre>
<p>或者,如果我有沿最后一个轴以更高分辨率采样的数据,我可以设置:</p>
<pre><code>pts = ( np.array([0,1.]), np.array([0,1.]), np.array([0,0.5,1.]) )
</code></pre>
<p>最后,<code>values</code>的形状必须与由<code>points</code>隐式布置的网格相对应。例如</p>
<pre><code>val_size = map(lambda q: q.shape[0], pts)
vals = np.zeros( val_size )
# make an arbitrary function to test:
func = lambda pt: (pt**2).sum()
# collect func's values at grid pts
for i in range(pts[0].shape[0]):
for j in range(pts[1].shape[0]):
for k in range(pts[2].shape[0]):
vals[i,j,k] = func(np.array([pts[0][i], pts[1][j], pts[2][k]]))
</code></pre>
<p>所以最后</p>
<pre><code>rgi = irp.RegularGridInterpolator(points=pts, values=vals)
</code></pre>
<p>按需运行和执行。</p>