首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如果我想要零插值(分段常数),什么是numpy.interp的最佳插入替代?

如果我想要零插值(分段常数),什么是numpy.interp的最佳插入替代?
EN

Stack Overflow用户
提问于 2012-09-02 15:41:57
回答 3查看 4.5K关注 0票数 6

numpy.interp是非常方便和相对快速的。在某些情况下,我想将它的输出与一个非插值变量进行比较,其中稀疏值被传播(在“更密集的”输出中),结果是稀疏输入之间的分段常数。我想要的函数也可以称为“稀疏->稠密”转换器,它复制最新的稀疏值,直到找到后来的值为止(一种空插值,就好像从前面的值过去了零时间/距离一样)。

不幸的是,要调整numpy.interp的源代码并不容易,因为它只是编译函数的包装器。我可以使用Python循环自己编写这个程序,但是我希望找到一种C速度的方法来解决这个问题。

更新:下面的解决方案(scipy.interpolate.interp1dkind='zero')非常慢,每次调用需要超过10秒(例如输入长度为500 K,即填充了50% )。它使用零阶样条实现kind='zero',对spleval的调用非常慢。然而,kind='linear'的源代码(即默认的内插)提供了一个很好的模板来解决这个问题,使用的是直接的numpy (最小的改变就是设置slope=0)。该代码展示了如何使用numpy.searchsorted解决问题,运行时类似于调用numpy.interp,因此问题的解决方法是调整线性插值的scipy.interpolate.interp1d实现以跳过插值步骤(斜率!= 0混合相邻值)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-02 16:25:48

scipy.interpolate.interp1d可以做各种各样的插值:‘线性’,‘最近’,‘零’,‘s线性’,‘二次,’立方‘。

请查看文件:http://docs.scipy.org/doc/scipy-0.10.1/reference/generated/scipy.interpolate.interp1d.html#scipy.interpolate.interp1d

票数 4
EN

Stack Overflow用户

发布于 2016-10-07 22:25:34

为了完成这个问题:问题的解决方案是下面的代码,我在更新后的答案中给出的提示帮助下编写了这些代码:

代码语言:javascript
运行
AI代码解释
复制
def interpolate_constant(x, xp, yp):
    indices = np.searchsorted(xp, x, side='right')
    y = np.concatenate(([0], yp))
    return y[indices]
票数 2
EN

Stack Overflow用户

发布于 2017-06-02 19:38:25

我完全同意那种=‘0’是非常慢的;对于一个数百万行的大数据集,它的速度几乎是‘线性’方法的1000倍。对于“左常量”插值--使用最新值--以下代码工作:

代码语言:javascript
运行
AI代码解释
复制
def approx(x, y, xout, yleft=np.nan, yright=np.nan): 
    xoutIdx     = np.searchsorted(x, xout, side='right')-1
    return (np.where(xout<x[0], yleft, np.where(xout>x[-1], yright, y[xoutIdx])))

来自R背景,这相当于R与f=0的接近。对于“右常量”插值,我还没有找到一种干净的方法,因为python的np.searchsorted =‘right’如果xout值与x中的值完全匹配,就会向后推一个索引。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12240634

复制
相关文章
[javascript] js格式化时间为xx秒前、xx分钟前、xx小时前等
有时候我项目里需要把时间格式化为xx秒前、xx分钟前、xx小时前等形式 可以使用下面这个函数 /** * 人性化时间 * @param {Object} timestamp */ functio
唯一Chat
2021/10/11
3.4K0
使用D3.JS进行坐标轴绘制和图绘制
前面已经说过D3的功能十分强大,但是往往实际使用时只需要用到一部分内容,在这里,就只用到了 比例尺 和 布局 两部分,外加 核心 的请求部分(请求数据),分别用来绘制Graph的显示坐标轴和图的顶点及边;
ZONGLYN
2019/08/08
6.6K0
使用D3.JS进行坐标轴绘制和图绘制
如何在 JavaScript 中创建自定义排序方法
一般情况咱们排序大都按数字或字母顺序,但也有一些情况下,咱们可能需要自定义排序顺序。
前端小智@大迁世界
2020/05/12
3.5K0
如何在 JavaScript 中创建自定义排序方法
如何在Keras中创建自定义损失函数?
我们使用损失函数来计算一个给定的算法与它所训练的数据的匹配程度。损失计算是基于预测值和实际值之间的差异来做的。如果预测值与实际值相差甚远,损失函数将得到一个非常大的数值。
AI研习社
2019/12/03
4.7K0
如何在 IDEA 中创建并部署 JavaWeb 程序
在之前 Java 的学习中,我们可能更多地是和控制台程序打交道,也就是我们日常说的黑框框程序。现在既然完成了 Java SE 部分的基础知识,是时候来学习 JavaWeb 部分。而随着 IDEA 的强势崛起和不断更新,使用 Eclipse 的同学可能会有些不习惯 IDEA。这一点确实是,IDEA 不同版本之间的操作和设置可能都有微小的变动,就算你之前一直使用的 IDEA,也可能会随着 IDEA 的更新找不到某些隐藏在犄角旮旯的操作。
村雨遥
2022/03/14
1.1K0
如何在 IDEA 中创建并部署 JavaWeb 程序
如何在 Linux 中为现有用户创建主目录?
在Linux系统中,每个用户都有一个主目录,通常称为home目录,用于存储用户的个人文件和配置信息。然而,有时候我们会创建一个新的用户,但是忘记或者没有选择为其创建一个主目录。在这种情况下,我们需要为现有用户创建主目录。本文将介绍如何在Linux中为现有用户创建主目录。
网络技术联盟站
2023/04/08
4.7K0
如何在 Flutter 中创建自定义图标【Flutter专题22】
Flutter 提供了很多开箱即用的图标,使用这些图标非常容易。但是,您也可以使用自己的图标。您需要的是一个 TTF(True Type Font)文件,其中包含您要使用的图标。生成 TTF 文件的最简单方法是使用 Fluttericon.com。
徐建国
2022/03/30
3.5K0
如何在Debian 9中为Apache创建自签名SSL证书
TLS或传输层安全性及其前身SSL(代表安全套接字层)是用于将正常流量包装在受保护的加密包装中的Web协议。
苏子晨
2018/11/15
2.6K0
如何在Ubuntu 16.04中为Nginx创建自签名SSL证书
TLS或称传输层安全性,及其前身SSL(代表安全套接字层)是用于将正常流量包装在受保护的加密包装中的Web协议。
不会飞的蝴蝶
2018/09/25
3.1K0
如何在Ubuntu 16.04中为Apache创建自签名SSL证书
TLS或传输层安全性及其前身SSL(代表安全套接字层)是用于将正常流量包装在受保护的加密包装中的Web协议。
藕丝空间
2018/09/28
1.9K0
在 Swift图表中使用Foundation库中的测量类型
在这篇文章中,我们将建立一个条形图,比较基督城地区自然散步的持续时间。我们将使用今年推出的新的Swift Charts框架,并将看到如何绘制默认不符合Plottable协议的类型的数据,如Measurement<UnitDuration>。
韦弦zhy
2022/11/07
2.8K0
在 Swift图表中使用Foundation库中的测量类型
D3.js库-7-坐标轴的使用
坐标轴是可视化图表中经常出现的一种图形,由一些刻度和线列段组成。D3中是没有现成的坐标轴,SVG中因而没有现成的图形元素,需要通过D3提供的其他组件来手动添加。下图是添加了坐标轴之后的效果图。
皮大大
2021/03/01
3.3K0
D3.js库-7-坐标轴的使用
如何在Flutter应用程序中创建不同的渐变[Flutter专题20]
Flutter 可用于创建漂亮的 UI。因此,在今天的文章中,我们将看到如何在应用程序中创建不同的渐变 。
徐建国
2021/12/22
4.9K0
如何在Flutter应用程序中创建不同的渐变[Flutter专题20]
10种免费的工具让你快速的、高效的使用数据可视化
是的,我们有数据,并有了数据的洞察,然后呢?显然,下一步将是与人们交流这些发现,以便他们采取必要的行动。最有效的数据交流方式之一就是讲故事。但是要成为有效的讲述者,我们需要简化事情,而不是使事情复杂化,这样使得分析的真正本质不会丢失。
AI研习社
2019/07/30
3.1K0
10种免费的工具让你快速的、高效的使用数据可视化
在 Swift 图表中使用 Foudation 库中的测量类型
在这篇文章中,我们将建立一个条形图,比较基督城地区自然散步的持续时间。我们将使用今年推出的新的Swift Charts 框架,并将看到如何绘制默认不符合 Plottable 协议的类型的数据,如 Measurement<UnitDuration>。
Swift社区
2022/12/12
2.5K0
在 Swift 图表中使用 Foudation 库中的测量类型
如何在js中创建对象
七夕临近了,没有对象的来创建一个吧 使用对象字面量: const o = { name: "zehan", greeting() { return `Hi, 我是${this.name}`; } }; o.greeting(); // "Hi, zehan" 使用构造函数: function Person(name) { this.name = name; } Person.prototype.greeting = function () { return `Hi, 我是
ZEHAN
2020/09/23
7.8K0
如何在Dynamo中创建UI
本文介绍了如何在Dynamo中创建UI,通过使用WPF技术实现了窗口的创建和交互。首先介绍了IronPython和Dynamo的基础知识,然后讲解了实现原理和准备工作。最后通过具体的操作步骤和代码示例讲解了如何在Dynamo中创建UI。
企鹅号小编
2018/01/05
2.2K0
如何在Dynamo中创建UI
如何在Mac中创建MiniKube
Minikube是一个工具,可以在本地轻松运行Kubernetes。 Minikube在笔记本电脑的VM中运行单节点Kubernetes集群,供希望尝试Kubernetes或日常开发的用户使用。
方志朋
2022/05/08
2.6K0
如何在Mac中创建MiniKube
三分钟教你如何在IDEA中快速创建工程
如果要创建 Web 工程,则需要勾选上面的 Web Application。如果不需要创建 Web 工程的话,则不需要勾选。这里先不勾选,只是创建简单的 Java 工程。
不温卜火
2020/10/28
1K0
三分钟教你如何在IDEA中快速创建工程
点击加载更多

相似问题

在x轴上格式化小时和分钟

12

在D3.js上仅在x轴上使用小时和分钟

31

格式化时间(以小时和分钟为单位)

15

d3.js:在x轴上显示小时、分钟、秒、毫秒

13

如何格式化Pandas / Matplotlib图形,使x轴刻度仅为小时和分钟?

160
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档