gpt4 book ai didi

python - 分散 DataFrame 的快速插值

转载 作者:行者123 更新时间:2023-12-01 07:43:21 26 4
gpt4 key购买 nike

TL;DR:问题:是否有一种快速方法可以在特定坐标处插入分散的二维数据集?

如果是的话,有人可以提供一个示例,其中包含“当前解决方案”中使用的示例数据和变量(因为我自己实现它显然很愚蠢)。

<小时/>

问题:

我需要在特定坐标点处对分散数据的 DataFrame(大小 = (34, 18))进行插值(如果可能的话还进行推断)。 DataFrame 始终保持不变。

插值需要很快,因为它在循环中完成超过 10.000 次。

预先不知道要插值的坐标,因为它们会在每个循环中发生变化。

<小时/>

当前解决方案:

def Interpolation(a, b):

#import external modules
import pandas as pd
from scipy import interpolate

#reading .xlsx file into DataFrame
file = pd.ExcelFile(file_path)
mr_df = file.parse('Model_References')
matrix = mr_df.set_index(mr_df.columns[0])

#interpolation at specific coordinates
matrix = Matrix.stack().reset_index().values
value = interpolate.griddata(matrix[:,0:2], matrix[:,2], (a, b), method='cubic')

return(value)

这种方法不适合长时间使用,因为仅#interpolation at certain坐垫下的两行代码就超过了95%的执行时间。

<小时/>

我的想法:

  • 如果数据需要插值和外推,scipy.interpolate.Rbf 似乎是最好的解决方案,但据我了解,它只会创建现有数据的更精细的网格,而无法在特定坐标处输出插值
  • 在特定坐标 (a,b) 周围创建一个较小的 4x4 矩阵可能会减少每个循环的执行时间,但我确实很难将 griddata 与较小的矩阵一起使用。我创建了一个 5x5 矩阵,第一行和第一列是索引,其他 4x4 条目是中间有特定坐标的数据。但我得到一个 TypeError: list Indexs Must be integers or slices, not tuple 我不明白,因为我没有更改任何其他内容。
<小时/>

示例数据:

          0.0     0.1     0.2     0.3
0.0 -407 -351 -294 -235
0.0001 -333 -285 -236 -185
0.0002 -293 -251 -206 -161
0.00021 -280 -239 -196 -151

no

最佳答案

感谢 @Jdog 的评论,我能够弄清楚:

在循环之前使用 scipy.interpolate.RectBivariateSpline 创建样条曲线并使用 scipy.interpolate.RectBivariateSpline.ev 读取特定坐标会降低执行速度插值时间从255s到289ms。

def Interpolation(mesh, a, b):

#interpolation at specific coordinates
value = mesh.ev(stroke, current)

return(value)

#%%

#import external modules
import pandas as pd
from scipy import interp

#reading .xlsx file into DataFrame
file = pd.ExcelFile(file_path)
mr_df = file.parse('Model_References')
matrix = mr_df.set_index(mr_df.columns[0])

mesh = interp.RectBivariateSpline(a_index, b_index, matrix)

for iterations in loop:
value = Interpolation(mesh, a, b)

关于python - 分散 DataFrame 的快速插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56577658/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com