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

python interpolate.interp1d_我如何使用scipy.interpolate.interp1d使用相同的X数组插值多个Y数组?…例如,我有一个二维数据数组,其中一个维度上带有误差条,如下所示:In[1]:numpyasnpIn[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.1In[5]:data=np.vstack([x,y,y_er]).TIn[6]:da…

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

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

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.net/137567.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SQL视图索引

    SQL视图索引在视图上创建索引的另一个好处是:查询优化器开始在查询中使用视图索引,而不是直接在FROM子句中命名视图。这样一来,可从索引视图检索数据而无需重新编码,由此带来的高效率也使现有查询获益。有关更多信息,请参见在视图上使用索引。在视图上创建聚集索引可存储创建索引时存在的数据。索引视图还自动反映自创建索引后对基表数据所做的更改,这一点与在基表上创建的索引相同。当对基表中的数据进行更改时,索引视图中

    2022年7月22日
    11
  • laravel判断上传文件是否有效

    laravel判断上传文件是否有效

    2021年10月10日
    44
  • 电脑播放已下载本地的m3u8缓存视频文件「建议收藏」

    经常在网上看视频,不管是电脑上还是手机上!最近几年除了m3u8格式的视频流,其它格式都很少见了。而为啥不用种子下载,是因为要浏览下剧情,看是否喜欢!原先有简单的视频合并工具软件,但现在能用的很少了!连以前下载的缓存都不能合并了!所以在百度了资料和各位大咖的文章后,写下了这篇文章!如果你嫌麻烦请无视!毕竟本人不怎么会编程,纯手动记事本编辑。用Potplayer播放,用HttpFileServer运行服务器。1、首先你当然得知道你下载的文件在哪,把m3u8文件和视频缓存碎片文件夹都复制到电.

    2022年4月13日
    101
  • oracle安装教程_卸载oracle11g

    oracle安装教程_卸载oracle11g不知道为什么不选择基本安装使用的高级安装启动OUI后出现“选择安装方式”窗口,我们选择:高级安装  步骤3:出现“选择安装类型”窗口,选择我们需要安装的版本。我们在此肯定是选择企业版。  图片看不清楚?请点击这里查看原图(大图)。  至于产品语言不用选择,它会根据当前系统的语言自动调整!  步骤4:出现“安装位置”窗口  图片看不清楚?请点击这里查看原…

    2022年9月21日
    2
  • 一些经久不衰的linux 视频教程列表

    一些经久不衰的linux 视频教程列表一些经久不衰的linux视频教程列表

    2022年6月3日
    37
  • XXE注入漏洞

    XXE注入漏洞什么是XML要想清楚XXE漏洞,首先要了解XMLXML可扩展标记语言(EXtensibleMarkupLanguage)。它是一门用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型。XML很像HTML,但是标签没有被预定义,需要自行定义标签。它的文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。它的设计宗旨是传输数据,而不是显示数据。php版本大于5.4.45的默认不解析外部实体传参实体:有%一般实体:无%xxe漏洞与ssrf漏洞相似虽然场景不同,

    2022年5月24日
    32

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号