Python scipy.spatial.Delaunay和copy.deepcopy因增量参数而出现故障

时间:2015-01-22 10:44:03

标签: python scipy delaunay

我使用scipy.spatial.Delaunay函数遇到了一个大问题。

我初始化一个名为 tri 的变量,如下所示:

tri = Delaunay(ApsArray, incremental=True)

这段代码完美无缺,但由于我必须在for循环中使用这种三角测量,我想在另一个名为 triTemp 的变量中复制 tri (作为时间变量) )。

我搜索了python文档,我在 copy 模块中找到了 deepcopy ,这允许我在内存中的另一个站点中复制 tri triTemp指出:

triTemp = deepcopy(tri)

它有效!但是当我尝试向 triTemp 添加新点时,会出现此错误:

    Traceback (most recent call last):
  File "C:\Users\user\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2883, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-77-2f5ca634bc26>", line 1, in <module>
    tri.add_points([[0.2,0.3]])
  File "qhull.pyx", line 1544, in scipy.spatial.qhull._QhullUser.add_points (scipy\spatial\qhull.c:13938)
  File "qhull.pyx", line 446, in scipy.spatial.qhull._Qhull.add_points (scipy\spatial\qhull.c:4954)
TypeError: 'NoneType' object is not subscriptable

我认为问题出在 incremental 参数上,因为 triTemp 只是 tri 内存中的一个副本,但我的问题是我不知道如何在不重新初始化 triTemp 的情况下更改此参数。

我想使用副本,而不是再次计算三角测量,因为我认为它更有效,所以如果有人知道达到这个目标的方法,请告诉我。

感谢所有人,对不好的英语感到抱歉!

1 个答案:

答案 0 :(得分:1)

目前(Scipy 0.15.1)在增量模式下无法复制Delaunay结构,因为三角测量的增量状态存储在Qhull内部。

如果您只需要一些属性,例如simplices等你只能复制它们。