【发布时间】:2019-02-28 06:30:39
【问题描述】:
我有 my own triangulation algorithm,它根据 Delaunay 条件和梯度创建三角剖分,使三角形与梯度对齐。
以上描述与问题无关,但对于上下文是必要的。
现在我想用我的三角测量与scipy.interpolate.LinearNDInterpolator 进行插值。
使用 scipy 的 Delaunay,我将执行以下操作
import numpy as np
import scipy.interpolate
import scipy.spatial
points = np.random.rand(100, 2)
values = np.random.rand(100)
delaunay = scipy.spatial.Delaunay(points)
ip = scipy.interpolate.LinearNDInterpolator(delaunay, values)
这个delaunay 对象具有构成三角剖分的delaunay.points 和delaunay.simplices。我自己的三角测量有完全相同的信息,但scipy.interpolate.LinearNDInterpolator 需要scipy.spatial.Delaunay 对象。
我想我需要继承scipy.spatial.Delaunay 并实现相关方法。但是,我不知道我需要哪些才能到达那里。
【问题讨论】:
-
LinearNDInterpolator也接受点数组作为其第一个参数。 -
我知道,但这会导致使用 scipy.spatial.Delaunay 进行新的三角测量,这不是我想要的。
-
我有同样的问题,我认为 Scipy 方面没有任何开发可以提供该功能。我试图创建一个虚拟的 Delaunay 对象并修改其属性的内容,但我得到了
AttributeError: can't set attribute。从好的方面来说,如果你在 2D 中工作,Matplotlib 提供了这个功能。使用Triangulation 创建三角剖分对象并使用CubicTriInterpolator 进行插值。
标签: scipy scipy-spatial