3

关于这一点:类似于 scipy.interpolate.griddata? 我还有一个问题:我的输出如下所示:在此处输入图像描述

这是一个有噪音的金字塔(没有地面)。scipy.interpolate.griddata 中是否有可能输入/选择某个 z 值,以便删除所有等于该 z 值的点?在我的示例中:例如,我输入了一个高 z 值 -> 只有具有某个红色值(= z 值)的点才能保持活动状态,并向我显示一个未填充的、有噪声的红色三角形。目标是获得这个带噪三角形内的区域。

编辑:tldr:正如我刚刚了解到的,这是我正在寻找的等值线及其内部区域。

edit2:所以我从这个例子中发现http://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.griddata.html "grid_z1.T" 返回了一个包含所有 z 值的数组. 在一个循环中,我可以消除所有不等于某个 z 值的值 -> 我得到了我的等值线。问题是,它不是中继等值线,而是具有一些等值的网格。没关系,但也许有更好的解决方案?除了 grid_z.T 还有其他方法可以满足我的需要吗?

4

2 回答 2

1

这最好在将数据转换为网格形式之前完成:

>>> x = [0,4,17]
>>> y = [-7,25,116]
>>> z = [50,112,47]

>> data = np.column_stack([x, y, z])
array([[  0,  -7,  50],
       [  4,  25, 112], # <<----------------  Keep this
       [ 17, 116,  47]])
>>> data = data[data[:,2] == 112]  # points with z==112
array([[  4,  25, 112]])

然后您可以使用 griddata 或例如此处给出的函数转换数据以进行绘图:

X, Y, Z = grid(data[0], data[1], data[2])
于 2013-08-28T23:16:21.890 回答
0

在那种特殊情况下,我可以用一种简单的方法来解决它:我没有消除所有不等于某个 z 值的值,而是消除了所有高于某个 z 值的值:

if grid_z1.T[i][j] > z0 or math.isnan(grid_z1.T[i][j]):
    grid_z1.T[i][j] = np.nan

因为我自己定义了gridsize,所以我可以很容易地通过将gridsize乘以点数来计算面积。

OT:很抱歉这么晚才回复——我已经住院 1 周了。

于 2013-09-11T16:40:39.790 回答