不規則なグリッドから通常のグリッドに 1D 配列の値を補間したいと考えています。たとえば、元のデータが不規則な間隔の X 座標に値を持っているとします。
source_x = np.asarray([127.3, 759.4, 1239.1, ..., 98430.1])
source_y = whatever(x) # No really a function but a set of masurements
宛先グリッドも 1D ですが、X 座標は軸に沿って等間隔に配置されています。
dest_x = np.arange(250, 100000, 500)
source_x
宛先座標配列のすべてのポイントについて、元の座標配列で最も近い 2 つの要素の距離とインデックスを見つけたいと考えていますdest_x
。例えば:
dest_x[0] = 250
indices = [0, 1]
distances = [250-127.3, 759.4-250]
可能であれば、これはアトミック操作として実行する必要があります。
私の最初のアイデアは を使用することでしたscipy.spatial.KDTree
が、これは 1D データを許可しません。他のオプションはありますか?
編集
ゼロの「ダミー」座標を含む「醜い」オプションがあり、次を使用できますscipy.spatial.KDTree
。
source_x = np.asarray([127.3, 759.4, 1239.1, ..., 98430.1])
source_dummy = np.zeros_like(source_x)
dest_x = np.arange(250, 100000, 500)
dest_dummy = np.zeros_like(dest_x)
src = np.vstack((source_x, source_dummy)).T
dst = np.vstack((dest_x, dest_dummy)).T
tree = KDTree(src)
distances, indices = tree.query(dst, 2)
しかし、私はこのアプローチがあまり好きではありません...