2013-08-28 94 views
5

我正在清理掉几个月前写的一些代码,并且由于某种原因它不再工作了......简而言之, ,我正在使用scipy.interpolate.LinearNDInterpolator对象来插入模型并与数据进行比较。现在,当我试图打电话与我想的插值坐标插补对象,我得到以下错误:scipy.interpolate.interpnd抱怨'Delaunay'对象没有属性'simplices'

In [9]: a([[3500, 3.5, 1.5]]) 
AttributeError       Traceback (most recent call last) 
<ipython-input-9-91f2103e7a0c> in <module>() 
----> 1 a([[3500, 3.5, 1.5]]) 

/usr/lib64/python2.7/site-packages/scipy/interpolate/interpnd.so in  scipy.interpolate.interpnd.NDInterpolatorBase.__call__ (scipy/interpolate/interpnd.c:3133)() 

/usr/lib64/python2.7/site-packages/scipy/interpolate/interpnd.so in  scipy.interpolate.interpnd.LinearNDInterpolator._evaluate_double (scipy/interpolate/interpnd.c:3954)() 

/usr/lib64/python2.7/site-packages/scipy/interpolate/interpnd.so in scipy.interpolate.interpnd.LinearNDInterpolator._do_evaluate (scipy/interpolate/interpnd.c:4684)() 

AttributeError: 'Delaunay' object has no attribute 'simplices' 

我从来没有见过这种错误,并且代码已经工作过。在scipy中有什么东西只是改变了,我不知道?

感谢您的期待!

+0

你能创建一个简单的,自包含的例子来证明问题吗?你之前使用的是什么版本的scipy,现在你在用什么? –

回答

3

我猜你使用旧版本的库:

德劳内库中有单纯两种不同的存取: “Delaunay.simplices”和“Delaunay.vertices” 这里显示(最新文档):http://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.Delaunay.html

这两个Delaunay.vertices标记为“已弃用”。

在Ubuntu 13.04的单纯通话不存在。然而,因为它仍然使用SciPy的0.11.0: http://docs.scipy.org/doc/scipy-0.11.0/reference/generated/scipy.spatial.Delaunay.html#scipy.spatial.Delaunay

试试这个小例子,或只是重写你的单纯打电话的顶点:

from __future__ import print_function 

import numpy as np 
from scipy.spatial import Delaunay 
import sys 

my_molecule = np.random.rand(400,3) #points for query 
points = np.random.rand(1000, 3) #points used for Triangulation 

diag = Delaunay(points) 
simplices = diag.find_simplex(my_molecule) 

for point,simplex in zip(my_molecule,simplices): 
    if simplex == -1: 
     print ("Point not included in diag.") 
     continue 
    print ("Doing vertices call: ") 
    spoints = diag.vertices[simplex] 
    print ("Doing simplices call: ") 
    spoints = diag.simplices[simplex]