「x」値の大きな 2 次元配列を計算するのに非常に時間がかかる 1 次元関数があるため、SciPy 機能を使用して内挿関数を作成し、それを使用して y を計算するのは非常に簡単です。はるかに高速。ただし、1 次元を超える配列では補間関数を使用できません。
例:
# First, I create the interpolation function in the domain I want to work
x = np.arange(1, 100, 0.1)
f = exp(x) # a complicated function
f_int = sp.interpolate.InterpolatedUnivariateSpline(x, f, k=2)
# Now, in the code I do that
x = [[13, ..., 1], [99, ..., 45], [33, ..., 98] ..., [15, ..., 65]]
y = f_int(x)
# Which I want that it returns y = [[f_int(13), ..., f_int(1)], ..., [f_int(15), ..., f_int(65)]]
しかし、戻ります:
ValueError: object too deep for desired array
すべての x メンバーをループできることはわかっていますが、それがより良いオプションであるかどうかはわかりません...
ありがとう!
編集:
そのような関数も仕事をします:
def vector_op(function, values):
orig_shape = values.shape
values = np.reshape(values, values.size)
return np.reshape(function(values), orig_shape)
np.vectorize を試しましたが、遅すぎます...