私はPythonを初めて使用します。次のようなデータセットからデータ値を補間しようとしています:a = [45.0,0.0017317314、-0.00274、...] [45.07,0.00173326、-0.002278、...]。。。
最初の列のデータの特定の値で、2番目から最後の列までのデータの値を見つけたいと思います。
私は次のコードを試しました:
interp_data = np.interp(45.01,a[:,0],a[:,1])
最初の試みとして、1つの列の1つのデータポイントの値を見つけます。ただし、「目的の配列に対してオブジェクトが深すぎます」というエラーが返されます。
ただし、以下はシェルで機能します
>>> xp = [45.0, 45.074969417037, 45.224757625296, 45.523726383073]
>>> fp = [1.73145123922036E-002, 1.73326024230735E-002, 1.73689532454203E-002, 1.74423417607930E-002]
>>> import numpy
>>> numpy.interp(45.1, xp, fp)
0.017338676881704793
また、次のように複数の値に対してこれを実行したいと思います。
for i in range(len(a)):
for j in range(a.shape[1]):
interp_data = np.interp(values,a[:,j],a[:,j])
ここで、valuesは、補間するデータポイントの配列です。
このエラーは、おそらく予想とは異なる形状であることが原因です。私は得る:
>>> a = np.zeros((10,2))
>>> print np.interp(0,a[:,0],a[:,1])
0.0
>>> a = np.zeros((10,2,3)) #note incorrect shape
>>> print np.interp(0,a[:,0],a[:,1])
ValueError: object too deep for desired array
整理された形になったら、
points = #the 1D array of data points you want to interpolate to
interp_data = np.interp(points,a[:,0],a[:,1])
np.interpは線形補間のみを提供することにも注意してください。より複雑な補間法については、scipy.interpolateを使用する必要があります(これは素晴らしいです!)。私はUnivariateSplineの大ファンです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加