Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >python interpolate.interp1d_我如何使用scipy.interpolate.interp1d使用相同的X数组插值多个Y数组?…

python interpolate.interp1d_我如何使用scipy.interpolate.interp1d使用相同的X数组插值多个Y数组?…

作者头像
全栈程序员站长
发布于 2022-09-05 04:57:08
发布于 2022-09-05 04:57:08
2.8K0
举报

大家好,又见面了,我是你们的朋友全栈君。

例如,我有一个二维数据数组,其中一个维度上带有误差条,如下所示:

In [1]: numpy as np

In [2]: x = np.linspace(0,10,5)

In [3]: y = np.sin(x)

In [4]: y_er = (np.random.random(len(x))-0.5)*0.1

In [5]: data = np.vstack([x,y,y_er]).T

In [6]: data

array([[ 0.00000000e+00, 0.00000000e+00, -6.50361821e-03],

[ 2.50000000e+00, 5.98472144e-01, -3.69252108e-03],

[ 5.00000000e+00, -9.58924275e-01, -2.99042576e-02],

[ 7.50000000e+00, 9.37999977e-01, -7.66584515e-03],

[ 1.00000000e+01, -5.44021111e-01, -4.24650123e-02]])

如果我想使用scipy.interpolate.interp1d,如何格式化它只需要调用一次?我想避免这种重复的方法:

In [7]: import scipy.interpolate as interpolate

In [8]: new_x = np.linspace(0,10,20)

In [9]: interp_y = interpolate.interp1d(data[:,0], data[:,1], kind=’cubic’)

In [10]: interp_y_er = interpolate.interp1d(data[:,0], data[:,2], kind=’cubic’)

In [11]: data_int = np.vstack([new_x, interp_y(new_x), interp_y_er(new_x)]).T

In [12]: data_int

Out[12]:

array([[ 0.00000000e+00, 1.33226763e-15, -6.50361821e-03],

[ 5.26315789e-01, 8.34210211e-01, 4.03036906e-03],

[ 1.05263158e+00, 1.18950397e+00, 7.81676344e-03],

[ 1.57894737e+00, 1.17628260e+00, 6.43203582e-03],

[ 2.10526316e+00, 9.04947417e-01, 1.45265705e-03],

[ 2.63157895e+00, 4.85798968e-01, -5.54638391e-03],

[ 3.15789474e+00, 1.69424684e-02, -1.31694104e-02],

[ 3.68421053e+00, -4.27201979e-01, -2.03689966e-02],

[ 4.21052632e+00, -7.74935541e-01, -2.61377287e-02],

[ 4.73684211e+00, -9.54559384e-01, -2.94681929e-02],

[ 5.26315789e+00, -8.97599881e-01, -2.94003966e-02],

[ 5.78947368e+00, -6.09763178e-01, -2.60650399e-02],

[ 6.31578947e+00, -1.70935195e-01, -2.06835155e-02],

[ 6.84210526e+00, 3.35772943e-01, -1.45246375e-02],

[ 7.36842105e+00, 8.27250110e-01, -8.85721975e-03],

[ 7.89473684e+00, 1.21766391e+00, -4.99008827e-03],

[ 8.42105263e+00, 1.39749683e+00, -4.58031991e-03],

[ 8.94736842e+00, 1.24503605e+00, -9.46430377e-03],

[ 9.47368421e+00, 6.38467937e-01, -2.14799109e-02],

[ 1.00000000e+01, -5.44021111e-01, -4.24650123e-02]])

我相信会是这样的:

In [13]: interp_data = interpolate.interp1d(data[:,0], data[:,1:], axis=?, kind=’cubic’)

解决方法:

因此,根据我的猜测,我尝试了axis =1.我仔细检查了唯一有意义的其他选项,axis = 0,它起作用了.所以对于下一个有同样问题的假人,这就是我想要的:

In [14]: interp_data = interpolate.interp1d(data[:,0], data[:,1:], axis=0, kind=’cubic’)

In [15]: data_int = np.zeros((len(new_x),len(data[0])))

In [16]: data_int[:,0] = new_x

In [17]: data_int[:,1:] = interp_data(new_x)

In [18]: data_int

Out [18]:

array([[ 0.00000000e+00, 1.33226763e-15, -6.50361821e-03],

[ 5.26315789e-01, 8.34210211e-01, 4.03036906e-03],

[ 1.05263158e+00, 1.18950397e+00, 7.81676344e-03],

[ 1.57894737e+00, 1.17628260e+00, 6.43203582e-03],

[ 2.10526316e+00, 9.04947417e-01, 1.45265705e-03],

[ 2.63157895e+00, 4.85798968e-01, -5.54638391e-03],

[ 3.15789474e+00, 1.69424684e-02, -1.31694104e-02],

[ 3.68421053e+00, -4.27201979e-01, -2.03689966e-02],

[ 4.21052632e+00, -7.74935541e-01, -2.61377287e-02],

[ 4.73684211e+00, -9.54559384e-01, -2.94681929e-02],

[ 5.26315789e+00, -8.97599881e-01, -2.94003966e-02],

[ 5.78947368e+00, -6.09763178e-01, -2.60650399e-02],

[ 6.31578947e+00, -1.70935195e-01, -2.06835155e-02],

[ 6.84210526e+00, 3.35772943e-01, -1.45246375e-02],

[ 7.36842105e+00, 8.27250110e-01, -8.85721975e-03],

[ 7.89473684e+00, 1.21766391e+00, -4.99008827e-03],

[ 8.42105263e+00, 1.39749683e+00, -4.58031991e-03],

[ 8.94736842e+00, 1.24503605e+00, -9.46430377e-03],

[ 9.47368421e+00, 6.38467937e-01, -2.14799109e-02],

[ 1.00000000e+01, -5.44021111e-01, -4.24650123e-02]])

我没有弄清楚使用np.vstack或np.hstack将new_x和内插数据合并在一行中的语法,但是这个post让我停止尝试,因为似乎更快地预分配了数组(例如,使用np.zeros)然后用新值填充它.

标签:scipy,python,numpy,interpolation

来源: https://codeday.me/bug/20191120/2044846.html

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/137567.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年6月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python中的曲线插值算法
在实际应用中需要对路径或者曲线进行重采样,重采样的过程就是"曲线拟合->重采样曲线点"的过程。
YoungTimes
2022/04/28
2.2K0
Python中的曲线插值算法
Scipy和Numpy的插值对比
插值法在图像处理和信号处理、科学计算等领域中是非常常用的一项技术。不同的插值函数,可以根据给定的数据点构造出来一系列的分段函数。这一点有别于函数拟合,函数拟合一般是指用一个给定形式的连续函数,来使得给定的离散数据点距离函数曲线的总垂直距离最短,不一定会经过所有的函数点。比如在二维坐标系内,用一条直线去拟合一个平面三角形所对应的三个顶点,那么至少有一个顶点是不会落在拟合出来的直线上的。而根据插值法所得到的结果,一定是经过所有给定的离散点的。本文针对scipy和numpy这两个python库的插值算法接口,来看下两者的不同实现方案。
DechinPhy
2022/05/09
3.6K0
Scipy和Numpy的插值对比
python一维插值scipy.interpolate.interp1d
SciPy的interpolate模块提供了许多对数据进行插值运算的函数,范围涵盖简单的一维插值到复杂多维插值求解。当样本数据变化归因于一个独立的变量时,就使用一维插值;反之样本数据归因于多个独立变量时,使用多维插值。
全栈程序员站长
2022/06/27
1.1K0
python一维插值scipy.interpolate.interp1d
python interpolate.interp1d_索引错误scipy.interpolate.interp1d「建议收藏」
我试图得到一个三次样条函数scipy.interpolate.interp1d功能。我试图让documentation page上的示例正常工作,但每当我运行它时,都会出现以下错误:plt.plot(x,y,’o’,xnew,f(xnew),’-‘, xnew, f2(xnew),’–‘) File
全栈程序员站长
2022/09/05
4800
SciPy详解
在Python科学计算领域,SciPy是一个非常重要的库。它提供了许多用于数值计算、优化、积分、统计和许多其他科学计算任务的功能。SciPy构建在NumPy之上,为数学、科学和工程领域的广泛问题提供了高效的解决方案。本教程将介绍SciPy的主要功能和用法,并提供一些示例以帮助您快速入门。
Michel_Rolle
2024/02/07
2.5K0
如何使用Python曲线拟合
在Python中进行曲线拟合通常涉及使用科学计算库(如NumPy、SciPy)和绘图库(如Matplotlib)。下面是一个简单的例子,演示如何使用多项式进行曲线拟合,在做项目前首先,确保你已经安装了所需的库。
华科云商小徐
2024/04/12
4570
python插值(scipy.interpolate模块的griddata和Rbf)
SciPy的interpolate模块提供了许多对数据进行插值运算的函数,范围涵盖简单的一维插值到复杂多维插值求解。
全栈程序员站长
2022/09/01
4.6K0
python中的scipy模块
scipy包含致力于科学计算中常见问题的各个工具箱。它的不同子模块相应于不同的应用。像插值,积分,优化,图像处理,统计,特殊函数等等。
狼啸风云
2019/08/31
5.5K0
【Python数值分析】革命:引领【数学建模】新时代的插值与拟合前沿技术
插值是一种在已知数据点之间估算函数值的方法。它在数据分析、信号处理和数值分析中具有广泛应用。插值的目标是通过构造一个插值函数,使该函数在给定的数据点处具有精确的函数值。
小李很执着
2024/08/05
2340
【Python数值分析】革命:引领【数学建模】新时代的插值与拟合前沿技术
解决AttributeError: type object 'scipy.interpolate.interpnd.array' has no attribut
近期,在使用SciPy库的过程中,你可能会遇到一个名为"AttributeError: type object 'scipy.interpolate.interpnd.array' has no attribute '__reduce_cython'"的错误。这篇博客将向你展示如何解决这个问题,并帮助你顺利继续使用SciPy库。
大盘鸡拌面
2023/10/21
2340
matlab interp1 c,SciPy interp1d结果与MatLab interp1不同[通俗易懂]
我正在将一个MatLab程序转换为Python,我很难理解为什么scipy.interpolate.interp1d给出的结果与MatlabInterp1不同。
全栈程序员站长
2022/07/01
2750
科技感爆棚!这样酷炫的Python图表谁能不爱?
色彩搭配对图表的第一印象至关重要,合理的设置对图表的颜值提升有着很大的帮助,本期推文结合一个具体例子对图表颜色搭配进行讲解。
小F
2020/12/16
7630
科技感爆棚!这样酷炫的Python图表谁能不爱?
技术图文:NumPy 的简单入门教程
这段时间,LSGO软件技术团队正在组织 “机器学习实战刻意练习”活动,这个活动是“Python基础刻意练习”活动的升级,是对学员们技术的更深层次的打磨。在用 Python 写各类机器学习算法时,我们经常会用到 NumPy库,故在这里总结一下,以方便学员们的学习。
Datawhale
2019/11/12
1.1K0
技术图文:NumPy 的简单入门教程
numpy小结
主要是对《利用python进行数据分析》第二版这本书中关于numpy的部分进行了复习,将相关的代码进行练习。 import numpy as np my_arr = np.arange(1000000) my_list = list(range(1000000)) %time for _ in range(10): my_arr2 = my_arr * 2 CPU times: user 21.2 ms, sys: 11.2 ms, total: 32.4 ms Wall time: 32.6 ms
皮大大
2021/03/02
3980
Python实现线性插值、抛物插值、样条插值、拉格朗日插值、牛顿插值、埃米尔特插值
今天给大家介绍7种插值方法:线性插值、抛物插值、多项式插值、样条插值、拉格朗日插值、牛顿插值、Hermite插值,并提供Python实现案例。
皮大大
2024/06/14
3.1K0
Scipy 中级教程——插值和拟合
Scipy 提供了丰富的插值和拟合工具,用于处理实验数据、平滑曲线、构建插值函数等。在本篇博客中,我们将深入介绍 Scipy 中的插值和拟合功能,并通过实例演示如何应用这些工具。
Echo_Wish
2024/01/12
6640
【实验楼-Python 科学计算】SciPy - 科学计算库(下)
使用 eigvals 计算矩阵的特征值,使用 eig 同时计算矩阵的特征值与特征向量:
统计学家
2019/04/10
9070
【实验楼-Python 科学计算】SciPy - 科学计算库(下)
Python机器学习的练习四:多元逻辑回归
在本系列的第3部分中,我们实现了简单的和正则化的逻辑回归。但我们的解决方法有一个限制—它只适用于二进制分类。在本文中,我们将在之前的练习中扩展我们的解决方案,以处理多级分类问题。 在语法上快速标注,为了显示语句的输出,我在代码块中附加了一个“>”,以表明它是运行先前语句的结果。如果结果很长(超过1-2行),那么我就把它粘贴在代码块的另一个单独的块中。希望可以清楚的说明哪些语句是输入,哪些是输出。 此练习中的任务是使用逻辑回归来识别手写数字(0-9)。首先加载数据集。与前面的示例不同,我们的数据文件是MATL
AiTechYun
2018/03/02
1.5K0
Python机器学习的练习四:多元逻辑回归
scipy.interpolate.interp1d()函数详解
SciPy的interpolate模块提供了许多对数据进行插值运算的函数,范围涵盖简单的一维插值到复杂多维插值求解。 当样本数据变化归因于一个独立的变量时,就使用一维插值;反之样本数据归因于多个独立变量时,使用多维插值。
全栈程序员站长
2022/06/27
2.2K0
python interpolate.interp1d,Python interp1d与UnivariateSpline
I’m trying to port some MatLab code over to Scipy, and I’ve tried two different functions from scipy.interpolate, interp1d and UnivariateSpline. The interp1d results match the interp1d MatLab function, but the UnivariateSpline numbers come out different – and in some cases very different.
全栈程序员站长
2022/07/01
3600
python interpolate.interp1d,Python interp1d与UnivariateSpline
推荐阅读
相关推荐
Python中的曲线插值算法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文