带样条+日期时间对象的平滑线不起作用

2023-11-30

我一直在努力让情节更加流畅,就像完成的一样here,但我的 X 是与 linspace 不兼容的日期时间对象。

我将 X 转换为 matplotlib 日期:

Xnew = matplotlib.dates.date2num(X)
X_smooth = np.linspace(Xnew.min(), Xnew.max(), 10)
Y_smooth = spline(Xnew, Y, X_smooth)

但后来我得到了一个空图,因为我的 Y_smooth 是

[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ]

由于某种未知的原因。

我怎样才能做到这一点?

EDIT

这是我打印变量时得到的结果,我没有看到任何异常:

X : [datetime.date(2016, 7, 31), datetime.date(2016, 7, 30), datetime.date(2016, 7, 29)]
X new: [ 736176.  736175.  736174.]
X new max: 736176.0
X new min: 736174.0
XSMOOTH [ 736174.          736174.22222222  736174.44444444  736174.66666667
  736174.88888889  736175.11111111  736175.33333333  736175.55555556
  736175.77777778  736176.        ]
Y [711.74, 730.0, 698.0]
YSMOOTH [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]

Your X值被颠倒,scipy.interpolate.spline要求自变量单调递增,并且不推荐使用此方法 - 使用interp1d相反(见下文)。

>>> from scipy.interpolate import spline
>>> import numpy as np
>>> X = [736176.0, 736175.0, 736174.0]  # <-- your original X is decreasing
>>> Y = [711.74, 730.0, 698.0]
>>> Xsmooth = np.linspace(736174.0, 736176.0, 10)
>>> spline(X, Y, Xsmooth)
array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.])

reverse X and Y首先,它有效

>>> spline(
...     list(reversed(X)),  # <-- reverse order of X so also
...     list(reversed(Y)),  # <-- reverse order of Y to match
...     Xsmooth
... )
array([  698.        ,   262.18297973,   159.33767533,   293.62017489,
         569.18656683,   890.19293934,  1160.79538066,  1285.149979  ,
        1167.41282274,   711.74      ])

请注意,许多样条插值方法需要X单调递增:

  • UnivariateSpline

x : (N,) 类数组- 独立输入数据的一维数组。一定会增加。

  • InterpolatedUnivariateSpline

x : (N,) 类数组- 数据点的输入维度 – 必须递增

默认顺序为scipy.interpolate.spline是立方的。由于只有 3 个数据点,三次样条之间存在很大差异 (order=3)和二次样条(order=2)。下图显示了不同阶样条之间的差异;注:100分用于smooth拟合曲线more.

scipy.interpolate.spline

的文档scipy.interpolate.spline含糊不清,表明它可能不受支持。例如,它没有列在scipy.interpolate主页或在插值教程. The 来源spline显示它实际上调用了spleval and splmake列在下面附加工具 as:

现有功能是为了向后兼容(不应在新代码中使用).

我会跟随板球_007的建议和使用interp1d。这是当前建议的方法,它有很好的文档记录教程中的详细示例和 API,它允许自变量默认不排序(任何顺序)(参见assume_sortedAPI 中的参数)。

>>> from scipy.interpolate import interp1d
>>> f = interp1d(X, Y, kind='quadratic')
>>> f(Xsmooth)
array([ 711.74      ,  720.14123457,  726.06049383,  729.49777778,
        730.45308642,  728.92641975,  724.91777778,  718.4271605 ,
        709.4545679 ,  698.        ])

如果数据排名不足,它也会引发错误。

>>> f = interp1d(X, Y, kind='cubic')

ValueError:x 和 y 数组必须至少有 4 个条目

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带样条+日期时间对象的平滑线不起作用 的相关文章

随机推荐

  • 何时在 PHP 中传递引用

    我想知道当您仅读取变量时通过引用传递是否是一个好习惯 或者是否应该始终将其作为值传递 通过引用传递的示例 a fish and chips b do my hash a echo b function do my hash value re
  • 在一定范围内创建整数的随机序列,并且它们之间的距离最小[关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 生成特定 nr 个均匀分布在特定范围内且每个元素之间距离最小的随机值整数的最快方法是什么 例如 给定 0 到 20 之间的序列范围 我们想要创建 5 个元素 每个元素之间至少有 3 个
  • gdal 2.1 光栅化

    在gdal 2 1中使用gdal Rasterize时是否可以设置数据类型 Byte Float32 目前 我使用 gdal Translate 转换为 Byte 但这效率很低 tif my target tif shp my source
  • 为什么在外部作用域中等待内联变量与简单的等待赋值不同?

    在我问这个问题之前 我做了研究这个问题 我不明白为什么下面的示例中的输出不同run1 and run2 use strict function sleep ms return new Promise resolve gt setTimeou
  • 从 .bat 文件/命令刷新 Firefox

    每当调用 bat 文件时 我都会尝试刷新 Firefox 我不想要延期 我需要知道是否有可以从 bat 文件中使用的命令来重新加载当前浏览器或选项卡 我知道你可以使用start firefox作为一个命令 但这只是打开一个新的 Firefo
  • 当使用 tokio_io 的 read_exact 和 Rc 时,为什么会出现“评估要求‘Sized’时发生溢出”的情况?

    已经发布了很多类似的错误 评估需求时溢出 但这种递归根本不应该发生 评估需求溢出 是什么意思以及如何修复它 My case更加简单并且看起来很无辜 extern crate tokio core extern crate tokio io
  • 如何在nginx中编写url重写?

    我希望人们输入http www myweb com like 1234456将重定向到http www myweb com item php itemid 1234456 我在配置中写了类似的东西 但它不起作用 location like
  • htmlagilitypack gzip 加密异常

    我遇到了异常 gzip is not support 这就是我用来加载页面的全部内容 关于如何允许 gzip 有什么想法吗 HtmlWeb hwObject new HtmlWeb HtmlAgilityPack HtmlDocument
  • 如何拆分网址[重复]

    这个问题在这里已经有答案了 所以我使用 python 对网页进行一些解析 我想将完整的网址分成两部分 说我有地址http www stackoverflow com questions ask 我需要协议和域 例如http www stac
  • 使用 crontab/cron 安排 python 3.6 脚本

    我只是在我的 Centos 开发服务器上设置一个 crontab job 在我的 crontab 中 我有以下内容 忽略时间设置 这是在 UTC 服务器时间 15 32 左右添加的 只是为了获得下一次计划运行 34 15 cd welcom
  • 变量从 PHP 传递到 Smarty 和 Javascript

    我在 php 中有一个对象 它像 smarty gt assign o o 一样传递给 Smarty 然后我需要在 JavaScript 中访问该对象及其属性 在 tpl 中没有任何 javascript 的情况下 你如何做到这一点 我希望
  • 如何在一个QTableView中显示多个QSqlTableModel的内容?

    我有一个MySql表 我们称之为x CREATE TABLE x Id int unsigned NOT NULL PRIMARY KEY AUTO INCREMENT A int unsigned NOT NULL B int FOREI
  • python中变量相乘时如何添加空格

    这是我的代码 print Type in another set of words x input print Now type in how many times you want it to appear WHOLE NUMBERS O
  • 如何通过 JavaScript 更改字体大小?

    该代码不起作用 var span document getElementById span span style fontsize 25px span innerHTML String JavaScript 区分大小写 所以 如果你想改变字
  • margin、padding、border 全部为零后还有空间吗?

    我已将边距 填充和边框设置为零 但 Firefox 和 Chrome 中的画布和 div 周围仍然有空间 显然 我不明白如何在 HTML 中紧贴元素 并且将不胜感激您的建议和指示
  • 在 NSString 的情况下,对自动释放对象的周引用不会被释放

    Why temp即使对象被声明为 也不会被释放并设置为 nil week 但如果 Person 反对 它会按预期工作 做NSString对象内存生命周期的处理方式不同 如何 interface Person NSObject propert
  • mysql 按问题排序

    如果我有这样的查询 SELECT FROM table WHERE id IN 3 6 1 8 9 这个 ids 数组是在 php 中动态构建的 并且顺序对我来说很重要 my array array 3 6 1 8 9 如何按元素在数组中出
  • C# 中的全局 Keyhook

    我想制作一个新的应用程序 我可以通过外部 GUI 的按键进行控制 如果按下该键 首先应该有一个文本字段发生变化 最后我想让计时器在按键时启动 我用谷歌搜索并访问了 Stack Overflow 但没有找到任何可以真正帮助我解决问题的方法 我
  • d3 径向条形图中的标签放置

    在我的 d3 径向图表中 我试图将标签文本置于段弧上方 而不是保留在外圆之外 Fiddle var width 360 height 300 barHeight height 2 40 var formatNumber d3 format
  • 带样条+日期时间对象的平滑线不起作用

    我一直在努力让情节更加流畅 就像完成的一样here 但我的 X 是与 linspace 不兼容的日期时间对象 我将 X 转换为 matplotlib 日期 Xnew matplotlib dates date2num X X smooth