关于此:analogy to scipy.interpolate.griddata? 我还有一个问题: 我的输出如下所示:
这是一个有噪音的金字塔(没有地面)。 在scipy.interpolate.griddata中是否有可能输入/选择某个z值,以便不的所有点都相等,这个z值会被删除?在我的例子中:例如我输入一个高z值 - >只有具有某个红色值(= z值)的点才能保持活着并向我显示一个未填充的,噪音的红色三角形。目标是将这个区域放在这个噪音三角形内。
编辑: tldr:正如我刚才所了解的那样,这是一个 isoline 我正在寻找的东西以及它里面的区域。
EDIT2: 所以我发现从这个例子http://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.griddata.html“grid_z1.T”返回一个包含所有z值的数组。在循环中,我可以消除所有不等于某个z值的值 - >我得到了我的等值线。问题是,它不是重新连接iso 线,而是一个具有一些iso值的网格。这很好,但也许有更好的解决方案? 还有其他一些方法,然后grid_z.T可以满足我的需求吗?
答案 0 :(得分: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转换数据以进行绘图,或者例如给定here的函数:
X, Y, Z = grid(data[0], data[1], data[2])
答案 1 :(得分: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:很抱歉这么晚回复 - 我已经住院一周了。