【发布时间】:2016-09-25 19:49:44
【问题描述】:
我有一组数据,表示使用等高线图绘制时可能看起来像地形图。我希望将数组扩展为以用户选择的间隔在点之间“插值”数据,然后用现有数据点之间的平均值填充缺失的元素。例如:
Original Array:
[[1 2 3]
[4 5 6]
[7 8 9]]
with 1X expansion becomes:
[[1 . 2 . 3]
[. . . . .]
[4 . 5 . 6]
[. . . . .]
[7 . 8 . 9]]
和填充的'.'值将是数据点区域中这些值的平均值。我知道有很多方法可以用 scipy.ndimage 过滤器做这样的事情,但似乎它们都改变了原始数据值,即 gaussian_filter 和 ndimage.zoom。
我想知道是否有一个我缺少的过滤器可以扩展此数据数组并将原始值保留在其扩展位置并用“内插”平均值填充缺失的点?如果有人能指出我正确的方向,我会检查一下,但我所有的搜索和测试都没有产生我想要的结果。
这是来自的适用代码示例。原始的 x、y 和 z 值来自从 mysql 数据库上的 sql 结果创建的数组,我尝试了从 0 到 5 的“顺序”变化、我能找到的所有列出的模式,以及打开和关闭预过滤器。我也尝试了许多使用 gaussian_filter 的选项。插值是从用户输入传递的 1 到 10 之间的数字:
x=np.array(self.lon)
y=np.array(self.lat)
z=np.array(self.plotdata)
if (int(interpolation)>0):
x=scipy.ndimage.zoom(x, int(interpolation), order=0, mode='nearest', prefilter=True)
y=scipy.ndimage.zoom(y, int(interpolation), order=0, mode='nearest', prefilter=True)
z=scipy.ndimage.zoom(z, int(interpolation), order=0, mode='nearest', prefilter=True)
TIA
【问题讨论】:
标签: python numpy matplotlib scipy