d行之间的Python插值

2024-05-06 23:40:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有二维网格上的数据,以点(x,Y,Z)为特征。X和Y值表示每个点的位置,Z表示每个点的“高度”或“强度”。在

我的问题是,我的数据坐标沿X轴是非常紧密的(约1000点),而我的Y坐标是分散的(约50点)。这意味着,当在散点图上绘制时,基本上数据行在相邻行之间具有相等的空白空间。在

散点图上数据间距的示例:

ooooooooooooooooooooooooooooooo


ooooooooooooooooooooooooooooooo


ooooooooooooooooooooooooooooooo

我想插值这些点得到一个连续的曲面。我希望能够评估这个表面上任何位置的“高度”。我尝试过似乎每一种scipy插值方法,但不确定什么是最“智能”的方法。我是否应该对数据的每个垂直切片进行插值,然后将它们缝合在一起?在

我想要一个尽可能平滑的表面,但需要一个保持形状的方法。我不希望任何插值曲面超出我的输入数据。在

你能提供的任何帮助都会很有帮助。在

编辑:

当我更多地思考这个问题时,似乎插值垂直切片然后将它们缝合在一起是行不通的。这将导致沿垂直切片的值仅受该切片的影响,这不会导致曲面不准确吗?在


Tags: 数据方法网格高度绘制空间切片特征
2条回答

我推荐这个tutorial。它的核心是(从link上取下):

>>> grid_x, grid_y = np.mgrid[0:1:100j, 0:1:200j]
>>> from scipy.interpolate import griddata
>>> grid_z0 = griddata(points, values, (grid_x, grid_y), method='nearest')
>>> grid_z1 = griddata(points, values, (grid_x, grid_y), method='linear')
>>> grid_z2 = griddata(points, values, (grid_x, grid_y), method='cubic')

这将得到三个不同级别的数据插值(doc)。在

如果你在寻找曲面,我的假设是你可以使用垂直切片,然后绘制填充的数据。在

相关问题 更多 >