草庐IT

Lagrange插值

全部标签

python - python中3D曲线的保形分段三次插值

我在3D空间中有一条曲线。我想在其上使用类似于matlab中的pchip的保形分段三次插值。我研究了scipy.interpolate中提供的函数,例如interp2d,但这些函数适用于某些曲线结构,而不适用于我拥有的数据点。有什么想法吗?这里是数据点:x,y,z0,0,00,0,98.430,0,196.850,0,295.280,0,393.70,0,492.130,0,590.550,0,656.170,0,688.980,0,787.40,0,885.830,0,984.250,0,1082.680,0,1181.10,0,1227.30,0,1279.530,0,1377.9

python - 使用 NumPy/SciPy 的向量值函数插值

有没有办法使用NumPy对向量值函数进行插值?/SciPy?有很多针对标量值函数的产品,我想我可以使用其中之一来分别估计向量的每个分量,但有没有更有效的方法?具体来说,我有一个函数f(x)=V,其中x是标量,V是向量。我还有一个xs及其对应的Vs的集合。我想用它来插入和估计任意x的V。 最佳答案 插值函数scipy.interpolate.interp1d也适用于插值的向量值数据(尽管不适用于向量值参数数据)。因此,只要x是标量,就可以直接使用。以下代码是对thescipydocumentation中给出的示例的轻微扩展:>>>fr

python - Matplotlib 删除缺失数据的插值

我正在使用Matplotlib绘制时间序列数据,但序列中缺少一些数据。Matplotlib隐式地将最后一个连续数据点加入到下一个数据点。但如果数据丢失,情节看起来很难看。以下是获得的情节。可以看出,在4月30日标记附近,数据缺失,Matplotlib加入点。下图也是数据的散点图。散点图掩盖了这个错误,但在这种情况下,相邻的数据点不会联合。此外,鉴于涉及大量数据点,散点图非常慢。此类问题的推荐解决方案是什么。 最佳答案 如果你能确定断点应该在哪里,你可以:分解数据并手工绘制每个“部分”在空白处的数据中插入np.nan参见示例Plotp

python - 如何从包含日期时间对象的数组中进行插值?

我正在寻找一个类似于np.interp的函数,它可以处理datetime对象。例如:importdatetime,numpyasnparr1=np.array([datetime.datetime(2008,1,d)fordinrange(1,10)])arr2=np.arange(1,10)np.interp(datetime.datetime(2008,1,5,12),arr1,arr2)理想情况下会返回5.5,但numpy引发TypeError:arraycannotbesafelycasttorequiredtype。有没有很好的pythonic方法解决这个问题?

python - For 循环似乎比 NumPy/SciPy 3D 插值更快

我对NumPy/SciPy插值方法感到困惑。我使用LinearNDInterpolator实现了3D线性插值,但我发现它非常慢。然后我用纯Python写了一个强力三重for循环方法,令人惊讶的是它给了我1000倍的加速。我也试了一下Numba包,但结果并没有更快。根据我在互联网上找到的任何来源,与NumPy/SciPy和Numba相比,Python循环应该超慢。但这不是我所看到的。我发布了我运行的整个源代码。我在我的机器上得到了这些时间:Numpyready:3.94499993324s,result[0]=0.480961746817Pythonforloop...Pythonrea

python - 为什么使用多个参数来记录而不是插值?

Python的日志记录函数允许您向它们传递多个参数,它们可以为您插入这些参数。所以你有一个选择:logger.info("Something%sthiswaycomes!"%"wicked")或logger.info("Something%sthiswaycomes!","wicked")但为什么要选择一个而不是另一个呢?这仅仅是让错误发生在记录器中而不是发生在正在记录的程序中的问题,还是有其他原因? 最佳答案 这是一个性能问题:当您在代码中进行插值时,每次调用记录器时都会执行此代码(如果记录器或日志级别未激活,则为事件)当您让记录

python - 使用 SciPy 规则网格在 Python 中进行快速二维插值以进行分散/不规则评估

我有一个规则的训练值网格(向量x和y分别有网格xmesh和ymesh以及已知的zmesh值)但是要插值的一组分散/参差不齐/不规则的值(向量xI和yI,我们在哪里对zI[0]=f(xI[0],yI[0])...zI[N-1]=f(xI[N-1],yI[N-1])感兴趣。此插值将是作为优化问题的一部分被调用了数百万次,因此性能太重要了,不能简单地使用制作网格和跟踪的方法。到目前为止,我已经能够找到一个接近我想要的scipy.interpolate函数,即Bpf函数。然而,因为它是一个分散的输入,我假设它没有很好的性能,我想用我更了解的样条、线性和最近邻插值方法来测试它,我希望它会更快。我

python - 用滚动平均值或其他插值法替换 NaN 或缺失值

我有一个包含月度数据的pandas数据框,我想为其计算12个月的移动平均值。但是,一月份每个月的数据都丢失了(NaN),所以我正在使用pd.rolling_mean(data["variable"]),12,center=True)但它只给了我所有的NaN值。有没有一种简单的方法可以忽略NaN值?我知道在实践中这将成为11个月的移动平均线。dataframe有其他包含1月份数据的变量,所以我不想只丢弃1月份的列并计算11个月的移动平均数。 最佳答案 有几种方法可以解决这个问题,最好的方法取决于1月份的数据是否与其他月份的数据存在系统

python - python中的对数插值

使用numpy.interp我能够计算在离散数据点处具有给定值的函数的一维分段线性插值。返回我的对数插值是不是类似的函数? 最佳答案 在过去,我只是将普通插值包装在对数空间中,即deflog_interp(zz,xx,yy):logz=np.log10(zz)logx=np.log10(xx)logy=np.log10(yy)returnnp.power(10.0,np.interp(logz,logx,logy))就我个人而言,我更喜欢scipyinterpolationfunctions(正如@mylesgallagher提到的

python - 使用 numpy.interp 的线性插值

我有一个float的一维数组A,它大部分都很好,但缺少一些值。丢失的数据被替换为nan(不是数字)。我必须通过附近良好值的线性插值来替换数组中的缺失值。所以,例如:F7(np.array([10.,20.,nan,40.,50.,nan,30.]))应该返回np.array([10.,20.,30.,40.,50.,40.,30.]).使用Python执行此操作的最佳方法是什么?任何帮助将不胜感激谢谢 最佳答案 你可以使用scipy.interpolate.interp1d:>>>fromscipy.interpolateimpor