我想在不同的网格上插值一组温度,定义在CFD模拟网格的每个节点上。你知道吗
原始集合中的数据是csv格式的(X1,Y1,Z1,T1),我想在X2,Y2,Z2网格上找到新的T2值。你知道吗
从SCIPY为我们提供的许多可能性来看,哪个更适合该应用程序?线性方法和最近节点方法的区别是什么?你知道吗
谢谢你抽出时间。你知道吗
举个例子:
import numpy as np
from scipy.interpolate import griddata
from scipy.interpolate import LinearNDInterpolator
data = np.array([
[ -3.5622760653000E-02, 8.0497122655290E-02, 3.0788827491158E-01],
[ -3.5854682326000E-02, 8.0591522802259E-02, 3.0784350432341E-01],
[ -2.8168760240000E-02, 8.0819296043557E-02, 3.0988532075795E-01],
[ -2.8413346037000E-02, 8.0890746063578E-02, 3.1002054434659E-01],
[ -2.8168663383000E-02, 8.0981744777379E-02, 3.1015319609412E-01],
[ -3.4150537103000E-02, 8.1385114641365E-02, 3.0865343388355E-01],
[ -3.4461673349000E-02, 8.1537336777452E-02, 3.0858242919307E-01],
[ -3.4285601228000E-02, 8.1655884824782E-02, 3.0877386496235E-01],
[ -2.1832991391000E-02, 8.0380712111108E-02, 3.0867371621337E-01],
[ -2.1933870390000E-02, 8.0335713699008E-02, 3.0867959866155E-01]])
temp = np.array([1.4285955811000E+03,
1.4281038818000E+03,
1.4543135986000E+03,
1.4636379395000E+03,
1.4624763184000E+03,
1.3410919189000E+03,
1.3400545654000E+03,
1.3505817871000E+03,
1.2361110840000E+03,
1.2398562012000E+03])
linInter= LinearNDInterpolator(data, temp)
print (linInter(np.array([[-2.8168760240000E-02, 8.0819296043557E-02, 3.0988532075795E-01]])))
这段代码正在运行,但是我有一个1000万个点的数据集要在相同大小的数据集上插值。你知道吗
问题是这个操作对于我所有的观点来说都非常慢:有没有改进代码的方法?你知道吗
我使用了LinearNDinterpolator,因为它似乎比最接近的interpolator(LinearVSNearest)快。你知道吗
一种解决方案是使用RegularGridInterpolator(如果您的网格是正则的)。我可以想到的另一种方法是通过间隔来减少数据大小:
相关问题 更多 >
编程相关推荐