同じ種類のオブジェクト、特に様々なLinearNDInterpolatorオブジェクトを格納するndarray Aがあります。たとえば、それはちょうど2と仮定しています:numpyオブジェクト配列のいくつかの要素を評価する
>>> A
array([ <scipy.interpolate.interpnd.LinearNDInterpolator object at 0x7fe122adc750>,
<scipy.interpolate.interpnd.LinearNDInterpolator object at 0x7fe11daee590>], dtype=object)
私は2つのことをしたいです。まず、ある点でAのすべてのオブジェクトを評価し、その中のすべての値を持つA.shapeのndarrayを取得したいと思います。しかし
>> A[[0,1]](1,1) =
array([ 1, 2])
ような何か、私は
TypeError: 'numpy.ndarray' object is not callable
はそれを行うことが可能になってしまいますか?
第2に、新しいLinearNDInterpolatorオブジェクトを構築せずに(ノードは同じままであるため)、補間値を変更したいと思います。すなわち、BはA.
のすべての要素の新しい値を含むndarrayある
A[[0,1]].values = B
のようなものをご提案いただきありがとうございます。
お返事ありがとうございます。問題は、配列がn次元であるため、リストやループで作業するのは面倒です。私はnumpy.frompyfuncを使って最初のことを行うことができました。eval_element = lambda array:array(1,1)を定義し、次にeval_ufunc = np.frompyfunc(eval_element、1、1)を定義することができます。 eval_ufunc(A)は、(1,1)で評価された各LinearNDinterpolatorのndarrayを返します。 – Tobias
はい、インターポレーターの値を変更することができます。これらの値はA [0] .values属性に格納されています。 – Tobias
'frompyfunc'は評価されていません。私はいくつかのSOの答えでそれを使用しました。 http://stackoverflow.com/a/36297194/901925 – hpaulj