soy*_*een 5 python interpolation scipy
几个月前我写的一些代码正在粉碎,并且由于某些原因它不再起作用......简而言之,我使用scipy.interpolate.LinearNDInterpolator对象来插入模型并与数据进行比较.现在,当我尝试使用我想要插值的坐标调用插值器对象时,我收到以下错误:
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'
Run Code Online (Sandbox Code Playgroud)
我之前从未见过这个错误,代码以前也有用过.在我不知道的scipy中,有些东西发生了变化吗?
谢谢你的期待!
小智 3
我猜你使用的是旧版本的库:
Delaunay 库有两个不同的单纯形访问器:“Delaunay.simplices”和“Delaunay.vertices”,如下所示(最新文档):http://docs.scipy.org/doc/scipy/reference/ generated/scipy.spatial。德劳内.html
两个 Delaunay.vertices 被标记为“已弃用”。
然而,在 Ubuntu 13.04 上,simplices 调用不存在,因为它仍然使用 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]
Run Code Online (Sandbox Code Playgroud)