Python 如何使用SciPy以列格式插入二维数据?

Python 如何使用SciPy以列格式插入二维数据?,python,numpy,scipy,interpolation,Python,Numpy,Scipy,Interpolation,我有一个示例网格的速度向量,如下所示: 数据是可用的。但是,数据以列格式存储,如下所示: 输入数据格式 x1, y1, ... (velocity vectors) x1, y2, ... (velocity vectors) x1, y3, ... (velocity vectors) : : : x4, y2, ... (velocity vectors) x4, y3, ... (velocity vectors) x4, y4, ... (veloci

我有一个示例网格的速度向量,如下所示:

数据是可用的。但是,数据以列格式存储,如下所示:

输入数据格式

x1, y1, ... (velocity vectors)
x1, y2, ... (velocity vectors)
x1, y3, ... (velocity vectors)
 :   :               :
x4, y2, ... (velocity vectors)
x4, y3, ... (velocity vectors)
x4, y4, ... (velocity vectors)   
我正在尝试使用
scipy
interpolate
函数应用二维插值。我需要加倍网格点的数量,并以相同的列格式插入和写入输出文件,即:

所需的输出格式(插值后):

x1_i, y1_i, ... (velocity vectors)
x1_i, y2_i, ... (velocity vectors)
x1_i, y3_i, ... (velocity vectors)
 :   :               :
x8_i, y6_i, ... (velocity vectors)
x8_i, y7_i, ... (velocity vectors)
x8_i, y8_i, ... (velocity vectors)  
MWE

import numpy as np
from scipy.interpolate import Rbf
from scipy import interpolate

_data_ = np.genfromtxt('./2d_interp.dat', skip_header=1, dtype = None, delimiter = '\t')

mesh_y = (np.max(np.diff(np.sort(_data_[:,0]))))
mesh_z = (np.max(np.diff(np.sort(_data_[:,1]))))
mesh_min = min(mesh_y, mesh_z)
x_max = np.max(_data_[:,0])
x_min = np.min(_data_[:,0])
y_max = np.max(_data_[:,1])
y_min = np.min(_data_[:,1])



interp_n_cells = max(abs(x_max - x_min)/mesh_min, abs(y_max - y_min)/mesh_min)
x_interp = np.linspace(x_min, x_max, 2 * interp_n_cells)
y_interp = np.linspace(y_min, y_max, 2 * interp_n_cells)

xx_interp, yy_interp = np.meshgrid(x_interp, y_interp)
interp_data = np.empty(shape=(len(x_interp * y_interp),6))
interp_data[:,0] = x_interp
interp_data[:,1] = y_interp
interp_data[:,2] = _data_[0,2]
for i in range(3,5):
    f = interpolate.interp2d(_data_[:,0], _data_[:,1], _data_[:,i], kind='linear')
    interp_data[:,i] = f(x_interp, y_interp)

现在,如何使用列格式的
scipy.interpolate
插值二维数据,即,我需要将点数加倍,以与输入格式相同的格式插值和输出数据(如上所述)。如何使用
scipy

您提供的示例生成错误:
interp\u data[:,i]=f(x\u interp,y\u interp)value错误:无法将输入数组从形状(82,82)广播到形状(82)
这是因为返回数组的所有
z\u ij
对应于
(x\u i,y\u j)的所有组合。这就是你想要解决的问题吗?不,我需要返回数组是(82x82,6),也就是说,所有可能的x_I和y_I组合在两列中。我看到的一个问题是,这种互操作成功,你的空间分辨率是10e-2,但是,你的速度要高出两个数量级。您需要一个包装器来规范化您的数据,并将结果恢复到可伸缩状态。