5

数か月前に書いたコードのほこりを払っていますが、何らかの理由で機能しなくなりました... 一言で言えば、モデルを補間してデータと比較するために 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'

このエラーはこれまで見たことがありませんが、コードは以前は機能していました。私が気付いていない scipy で何かが変わったのでしょうか?

ご覧いただきありがとうございます。

4

1 に答える 1

3

ライブラリの古いバージョンを使用していると思います:

Delaunay ライブラリには、simplices 用の 2 つの異なるアクセサーがあります。"Delaunay.simplices" と "Delaunay.vertices" がここに示されています (最新のドキュメント): http://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial。 Delaunay.html

2 つの Delaunay.vertices のうち、「非推奨」とマークされています。

Ubuntu 13.04 では、まだ scipy 0.11.0を使用しているため、simplices 呼び出しは存在しません。 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]
于 2013-09-03T13:15:40.260 に答える