在展平2D网格网格时保持点相关

时间:2016-03-31 15:30:40

标签: arrays python-2.7 scipy linear-interpolation

如何在保持点相关的同时展平三个独立的二维数组?例如,我正在从包含x和y的位置信息的数据集创建网格网格,以及一些相关的数据数组(cartm)。插值后,由于meshgrid,X2Y2的大小为300x300; interpval的大小也是300x300,因为每个interpval点与(X2,Y2)网格网格上的单个坐标相关联。

如何展平这些2d矩阵中的每一个,并保持interpval的值与它们在meshgrid上的位置之间的1:1相关性?最后,我想得到一个Nx3阵列,一个X-location列,一个Y-location列和一个带有相应插值数据的列。提前谢谢!

import numpy as np
import scipy.interpolate
import matplotlib.pyplot as plt

# Create x,y vectors
cartx = np.array([0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50])
carty = np.array([1, 23, 4, 6, 12, 15, 16, 18, 20, 21, 22])

# Create data vector
cartm = np.array([5.3, 23, 2, 5, 2, 2.5, 13, 9, 7.5, 1.7, 12])

# Prepare meshgrid, interpolate
cartcoord = zip(cartx, carty)
X = np.linspace(cartx.min(), cartx.max(), 300)
Y = np.linspace(carty.min(), carty.max(), 300)
X2, Y2 = np.meshgrid(X, Y)
interp = scipy.interpolate.LinearNDInterpolator(cartcoord, cartm, fill_value=0)
interpval = interp(X2, Y2)

print(X2.shape, Y2.shape, interpval.shape)

1 个答案:

答案 0 :(得分:1)

您可以使用ravel()方法展平 if (Keyword.toLowerCase().equals(s.toLowerCase()) && !"".equals(s)) { sum += .... break; } X2Y2。要将它们放入Nx3阵列,您可以使用numpy.column_stack。所以 这应该这样做:

interpval

例如,

np.column_stack((X2.ravel(), Y2.ravel(), interpval.ravel()))