補間
|
SciPy補間 (interpolate)
SciPy モジュールを使った補間 (interpolate) の方法を示します.
目次
はじめに
使ってみよう
データをスプライン関数で補間するプログラム()
001 # -*- coding: utf-8 -*-
002 import numpy as np
003 import matplotlib.pyplot as plt
004 from scipy import interpolate
005
006 # ===========================================================
007 # 補完のクラス
008 # ===========================================================
009 class INTERPOLATE(object):
010 # -------------------------------------------------------
011 # コンストラクター
012 # -------------------------------------------------------
013 def __init__(self, x, y):
014 self.x = x
015 self.y = y
016
017 # -------------------------------------------------------
018 # 補間の実行
019 # -------------------------------------------------------
020 def do_interpolate(self):
021 self.f = interpolate.InterpolatedUnivariateSpline(self.x, self.y)
022
023 # -------------------------------------------------------
024 # 補間結果のプロット
025 # -------------------------------------------------------
026 def plot(self, Nx=65):
027 xmin, xmax = min(self.x), max(self.x)
028 xp = np.linspace(xmin, xmax, Nx)
029 fig = plt.figure()
030 plot = fig.add_subplot(1,1,1)
031 plot.set_xlabel("x", fontsize=12, fontname='serif')
032 plot.set_ylabel("y", fontsize=12, fontname='serif')
033 plot.tick_params(axis='both', length=10, which='major')
034 plot.tick_params(axis='both', length=5, which='minor')
035 plot.set_xlim(0, 2*np.pi)
036 plot.set_ylim([-1.2,1.2])
037 plot.minorticks_on()
038 plot.plot(xp, self.f(xp), 'b-')
039 plot.plot(x, y, 'ro', markersize=10)
040 fig.tight_layout()
041 plt.show()
042 fig.savefig('result.pdf', orientation='portrait', \
043 transparent=False, bbox_inches=None, frameon=None)
044 fig.clf()
045
046 # -------------------------------------------------------
047 # メイン関数
048 # -------------------------------------------------------
049 if __name__ == "__main__":
050
051 x = np.linspace(0, 2*np.pi, 17)
052 y = np.sin(x)
053
054 fit = INTERPOLATE(x, y)
055 fit.do_interpolate()
056 fit.plot(Nx=127)
057
InterpolatedUnivariateSpline
scipy.interpolate.InterpolatedUnivariateSpline(
x, y, w=None, bbox=[None, None], k=3, ext=0, check_finite=False)
- x : (N,) array_like
- データの配列.一様増加である必要があります.
- y : (N,) array_like
- データの配列.
- w : (N,) array_like, optional
- フッティング時の重み配列.正の値である必要があります.設定しない場合 (デフォルト) は,全てのデータ点の重みは等しくなります.
- bbox : (2,) array_like, optional
- フィッティングの両端 (x軸) を決める2つのシーケンス.デフォルトは,bbox=[x[0], x[-1]] で,インプットの両端です.
- k : int, optional
- スプラインフィッティングの次元で, 1 <= k <= 5 である必要があります.デフォルトは,k=3 (cubic spline) です.
- ext : int or str, optional
- 外挿の設定です.
- if ext=0 or ‘extrapolate’, 外挿の値です.
- if ext=1 or ‘zeros’, ゼロです.
- if ext=2 or ‘raise’, ValueError になります.
- if ext=3 of ‘const’, 境界の値です..
デフォルトは 0 です.
- check_finite : bool, optional
- 入力配列に無意味 (inf) な値の有無のチェックします. 無効 (False) にするとパフォーマンスが向上する可能性がありますが,入力に無限大 (inf) または 非数 (NaN) が含まれていると問題が発生する可能性があります.デフォルトはFalseです.
SciPy のいろいろな補間
一変数(一次元)
一変数 (一次元) の補間モジュール
一変数補間モジュール |
補間の内容 |
interp1d(x, y[, kind, axis, copy, ...]) |
1次元の補間関数 |
BarycentricInterpolator(xi[, yi, axis]) |
点の集合の補間多項式 |
KroghInterpolator(xi, yi[, axis]) |
ひとつの点集合の補間多項式 |
PchipInterpolator(x, y[, axis, extrapolate]) |
区分的三次エルミート内挿多項式 |
barycentric_interpolate(xi, yi, x[, axis]) |
多項式補間 |
krogh_interpolate(xi, yi, x[, der, axis]) |
多項式補間 |
pchip_interpolate(xi, yi, x[, der, axis]) |
区分的3次エルミート内挿多項式 (PCHIP) 補間 |
Akima1DInterpolator(x, y[, axis]) |
Akima 補間 |
CubicSpline(x, y[, axis, bc_type, extrapolate]) |
3次スプライン補間 |
PPoly(c, x[, extrapolate, axis]) |
係数とブレークポイントによる区分的多項式 |
BPoly(c, x[, extrapolate, axis]) |
係数とブレークポイントによる区分的多項式 |
多変数(多次元)
非構造データ
非構造データの多変数 (多次元) の補間モジュール
多変数補間モジュール |
補間の内容 |
interp1d(x, y[, kind, axis, copy, ...]) |
1次元の補間関数 |
griddata(points, values, xi[, method, ...]) |
Interpolate unstructured D-dimensional data. |
LinearNDInterpolator(points, values[, ...]) |
Piecewise linear interpolant in N dimensions. |
NearestNDInterpolator(points, values) |
Nearest-neighbour interpolation in N dimensions. |
CloughTocher2DInterpolator(points, values[, tol]) |
Piecewise cubic, C1 smooth, curvature-minimizing interpolant in 2D. |
Rbf(*args) |
A class for radial basis function approximation/interpolation of n-dimensional scattered data. |
interp2d(x, y, z[, kind, copy, ...]) |
Interpolate over a 2-D grid. |
グリッドデータ
グリッドデータの多変数 (多次元) の補間モジュール
グリッドデータ多変数補間モジュール |
補間の内容 |
interpn(points, values, xi[, method, ...]) |
長方形グリッド上の多次元の補間 |
RegularGridInterpolator(points, values[, ...]) |
任意次元の長方形グリッド上の補間 |
RectBivariateSpline(x, y, z[, bbox, kx, ky, s]) |
長方形メッシュ上の2変数スプライン近似 |
その他
その他の多変数 (多次元) の補間モジュール
その他の多変数補間モジュール |
補間の内容 |
NdPPoly(c, x[, extrapolate]) |
区分的テンソル積多項式 |
ページ作成情報
参考資料
更新履歴
|