numpy stride_tricks.as_strided 与滚动窗口的列表理解

2024-03-25

在处理滚动窗口时,我以列表理解的方式编写函数

[np.std(x[i:i+framesize]) for i in range(0, len(x)-framesize, hopsize)])]

最近我发现numpy.lib.stride_tricks.as_strided并发现它广泛用于滚动窗口(例如,这个帖子 http://www.rigtorp.se/2011/01/01/rolling-statistics-numpy.html),尽管它是一个“隐藏”函数。

In 这个问题 https://github.com/numpy/numpy/issues/6565关于为什么 stride_tricks.as_strided 没有记录,有人提到

故意地!这很危险!这只是帮助实现broadcast_arrays() 的低级管道。

有什么好处吗stride_tricks.as_strided是通过列表理解还是 for 循环?我看了一下的源代码stride_tricks https://github.com/numpy/numpy/blob/master/numpy/lib/stride_tricks.py但收获甚微。


From this post https://stackoverflow.com/a/40085052/3293881, 我们可以用strided_app基本上将滑动视图放入数组中,它还允许我们指定跳跃大小/步长。然后,我们只需使用np.std沿着第二个轴的最终输出,就像这样 -

np.std(strided_app(x, framesize, hopsize), axis=1)

运行样品进行验证 -

In [162]: x = np.random.randint(0,9,(11))

In [163]: framesize = 5

In [164]: hopsize = 3

In [165]: np.array([np.std(x[i:i+framesize]) \
            for i in range(0, len(x)-framesize+1, hopsize)])
Out[165]: array([ 1.62480768,  2.05912603,  1.78885438])

In [166]: np.std(strided_app(x, framesize, hopsize), axis=1)
Out[166]: array([ 1.62480768,  2.05912603,  1.78885438])

作为输入数组的视图,这些跨步操作必须非常高效。让我们来看看吧!

运行时测试

循环方法 -

def loopy_app(x, framesize, hopsize):
    return [np.std(x[i:i+framesize]) \
        for i in range(0, len(x)-framesize+1, hopsize)]

时间安排 -

In [185]: x = np.random.randint(0,9,(1001))

In [186]: framesize = 5

In [187]: hopsize = 3

In [188]: %timeit loopy_app(x, framesize, hopsize)
10 loops, best of 3: 17.8 ms per loop

In [189]: %timeit np.std(strided_app(x, framesize, hopsize), axis=1)
10000 loops, best of 3: 111 µs per loop

因此,要回答效率问题strides,时间安排应该有助于证明这一点!

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

numpy stride_tricks.as_strided 与滚动窗口的列表理解 的相关文章

  • 将字段重新格式化为列,其他字段(与先前结构中成为列的字段配对)成为新列中的字段

    我的任务是清理慈善机构设计的移动应用程序中的数据 在一个部分中 用户问答应用程序使用会话由一行表示 该部分由重复的问题答案字段对组成 其中一个字段代表所提出的问题 然后它旁边的字段代表相应的答案 每个问题 字段和答案列对一起代表一个独特的问
  • 用定点迭代求解该方程

    我怎样才能解这个方程 x3 x 1 0 使用定点迭代 有没有定点迭代我可以在网上找到代码 尤其是Python 吗 Using scipy optimize fixed point http docs scipy org doc scipy
  • 如何从 Ruby 2.0 中的字符串数组获取值

    我有这个字符串数组 array nike air nike steam nike softy nike strength smooth sleeper adidas air addidas jogar adidas softy adidas
  • 使用DockerOperator时如何同时使用xcom_push=True和auto_remove=True?

    Problem 跑步时DockerOperator with xcom push True xcom all True and auto remove True 任务会引发错误 就好像容器在读取其内容之前被删除一样STDOUT Exampl
  • 参数太少错误,同时未使用参数占位符

    我尝试使用 PYODBC 在 Access 数据库中执行 SQL 查询 但出现以下错误 pyodbc Error 07002 07002 Microsoft ODBC Microsoft Access 驱动程序 参数太少 预期为 1 301
  • 如何在 Django 1.4 中自定义管理过滤器

    我是 Python 和 Django 开发的新手 我从社区提供的易于阅读的示例中学到了很多东西 但最近我想为 Django 附带的管理控制台实现一个自定义的管理过滤器 我进行了很多搜索 只发现了一些过时的方法来完成它 例如 Django 1
  • 如何避免在matplotlib中调用latex(输出到pgf)

    我使用 matplotlib 及其 pgf 后端来生成包含在 LaTeX 投影仪文档中的绘图 当我使用未定义的乳胶命令时 我遇到了麻烦 但对于我的应用程序 我不需要 matplotlib 来使用 Latex 生成标签或注释 我只想要正确的
  • 将 Selenium 与 PyCharm CE 结合使用

    我正在尝试将 Selenium 与 PyCharm CE 一起使用 我已经使用 pip install Selenium 安装了 Selenium 并且可以通过终端使用它 但是当我尝试将它与 PyCharm 一起使用时 出现导入错误 Imp
  • 我无法设置顶级标题

    我想为 TopLevel 设置标题 但 TopLevel 显示 Root 的标题 我认为我的下一个脚本与 TkInter 文档中的示例相对应 但给了我不好的结果 你能解释一下 为什么我的设置master title 顶部 in 应用程序顶部
  • Python 上每个系数具有特定约束的多元线性回归

    我目前正在数据集上运行多元线性回归 起初 我没有意识到我需要限制自己的体重 事实上 我需要有特定的正权重和负权重 更准确地说 我正在做一个评分系统 这就是为什么我的一些变量应该对音符产生积极或消极的影响 然而 当运行我的模型时 结果不符合我
  • 如何在Python中获取套接字的外部IP?

    当我打电话时socket getsockname 在套接字对象上 它返回我的机器的内部 IP 和端口的元组 但是 我想找回我的外部IP 最便宜 最有效的方式是什么 如果没有外部服务器的配合 这是不可能的 因为您和另一台计算机之间可能存在任意
  • Google App Engine self.redirect() POST 方法

    在 GAE Python 中 使用 webApp 框架 调用 self redirect some url 通过 GET 方法将用户重定向到该 URL 是否也可以通过带有一些参数的 POST 方法进行 重定向 如果可以的话 怎样做 Than
  • Python:如何对数组 X 进行排序,但对 Y 进行相同的相对排序?

    例如 X 5 6 2 3 1 Y 7 2 3 4 6 我对X进行排序 X 1 2 3 5 6 但我希望对 Y 应用相同的相对排序 以便数字保持与以前相同的相对位置 Y 6 3 4 7 2 我希望这是有道理的 通常 你会做一个zip sort
  • gstreamer 中的无缝视频循环

    我正在尝试使用 gstreamer 循环播放视频 它是 python 绑定 第一次尝试是hook EOSmessage并为管道生成搜索消息 import gi gi require version Gst 1 0 from gi repos
  • 有没有比 Python 内置 == 运算符更快的方法来测试两个列表是否具有完全相同的元素?

    如果我有两个列表 每个列表有 800 个元素长并填充整数 有没有比使用内置元件更快的方法来比较它们具有完全相同的元件 如果没有 则短路 操作员 a 6 2 3 88 54 486 b 6 2 3 88 54 486 a b gt gt gt
  • 在Python中通过sys.stdout写入unicode字符串

    暂时假设一个人无法使用print 从而享受自动编码检测的好处 所以这给我们留下了sys stdout 然而 sys stdout太蠢了不做任何合理的编码 http bugs python org issue4947 现在人们阅读 Pytho
  • 在 python 中使用 re.sub 将字母变成大写?

    在许多编程语言中 以下内容 find foo a z bar并替换为GOO U 1GAR 将导致整个匹配项变为大写 我似乎无法在 python 中找到等效项 它存在吗 您可以将函数传递给re sub http docs python org
  • *Python 内的 Kaggle API 文档?

    我想写一个python从 Kaggle com 下载公共数据集的脚本 Kaggle API 是用 python 编写的 但是我能找到的几乎所有文档和资源都是关于如何在命令行中使用该 API 的 而关于如何使用kaggle图书馆内python
  • 通过过滤对 Pyspark Dataframe 进行分组

    我有一个数据框如下 cust id req req met 1 r1 1 1 r2 0 1 r2 1 2 r1 1 3 r1 1 3 r2 1 4 r1 0 5 r1 1 5 r2 0 5 r1 1 我必须观察客户 看看他们有多少要求 看看
  • 将非方邻接矩阵导入 Networkx python

    我在下面有一些 pandas 数据框形式的数据 其中列代表离散技能 行代表离散工作 仅当工作需要该技能时才存在 1 否则为 0 skill 1 skill 2 job 1 1 0 job 2 0 0 job 3 1 1 我想使用 netwo

随机推荐

  • 如果列属于特定类型,我如何在 MS SQL Server 2005 中检查

    我想更改 MS SQL Server 2005 中列的类型 但在更改该列的类型之前 我想检查该列是否属于我想要更改的类型 我怎样才能在 SQL 中做到这一点 谢谢 巴斯 亨德里克斯 根据 anwser 我编写了以下查询来实现这一目的 IF
  • Devise + Omniauth:未定义的方法“user_omniauth_authorize_path”

    我一直在关注facebook 的omniauth devise集成指南 https github com plataformatec devise wiki OmniAuth Overview当我单击链接使用 Facebook 链接登录时
  • TomEE 上的 Java Eclipselink 给出“缺少必需的 persistence.xml”

    我正在尝试在 TomEE 上设置 Eclipselink 但遇到了有关缺少 persistence xml 的错误 但 persistence xml 存在于 ProjectPath META INF persistence xml 中 我
  • 如何确保iOS应用程序收到服务器发送的每个推送通知?

    众所周知 如果应用程序处于后台或离线模式 则不会收到推送通知 应用程序在用户操作后获取一次 点击通知或应用程序图标 苹果推送通知服务保留只有最后一个通知当设备离线时 设备连接到互联网后 APN 会发送最后一条通知 怎么解决这个问题呢 刚刚到
  • 在 Javascript 中使用 Math random 生成大数

    我需要使用 Math random 生成 26 位数字 但是当我使用它时 Math floor Math random 100000000000000000000000000 900000000000000000000000000 I ge
  • Firebase 搜索子项并返回父项键

    我试图通过对其子参数的搜索返回 Firebase 中的 UID 键值 Users BCsuC4XAZq0MDK1taLcD2 Name Test1 Phone 0011223344 t50GPKxb8mgINGbmGJrR83 Name T
  • 蚂蚁设计。如何动态设置表单字段错误消息?

    表单字段有很多异步检查规则 因为复合 api 可以通过返回不同的结果一次检查这些规则 所以我不想触发这么多 api 请求 语法更新为v4 新语法是 setFields Set fields status fields FieldData g
  • swift 函数调用:self 关键字与不使用 self 关键字

    我想知道类中的这两个函数调用之间是否有任何区别 self myFuction VS myFunction 它以两种方式发挥作用 有没有必要使用self关键字的情况 大多数情况下 绝对没有区别 但如果省略 self 则更加 迅速 但有一种情况
  • 如何配置额外/不同的迁移文件夹

    我和一位同事正在从事共享一些模型的不同项目 因此 我们通过 git 子模块共享模型 此外 我们还希望能够共享迁移 这样 我同事的迁移就会在文件夹中db migrate other db我的项目 如何配置 Rails 迁移以在这个额外文件夹中
  • Rails4 未知编码名称 - CP720

    当我想运行任何 gem 命令时 例如 我收到此错误 gem install rubygems update 错误 while executing gem ArgumentError unknown encoding name CP720 所
  • 自动增量已自动重置回 1

    我刚刚遇到了一个我无法解决的问题 我有一个数据库表project queues它用作队列 我在其中存储一些记录 处理记录后 它们将被删除 删除是由 Rails 构造调用的record destroy在触发的循环中DELETE record
  • WPF:绑定到类内的列表

    我有一个文件类定义如下 public class File public string FileName set get public List
  • 如何在世博会上运行“@apollo/client”

    我有一个裸露的反应本机 然后我将项目转换为expo项目 因为该项目没有与主 React Native 项目一起运行 所以在创建 expo 项目后 我尝试运行该项目 但它给了我这个错误 While trying to resolve modu
  • 在 Fortran 95 中按值传递参数

    如何在调用函数参数时保留其值而不创建新变量 这就是 如何按值传递参数 在此示例代码中 program what implicit none integer a b c d a 1 b 2 c 3 print a b c d f val a
  • varchar 和 int mysql 数据类型的默认值

    屏幕截图显示了数据类型的 3 个典型定义 id 自动增量 标题和数字 1 之间有哪些区别 none and NULL 2 我必须选择吗as defined 当我想要一个空字符串时 对于 varchar 类型 3 我必须放一个as defin
  • 我什么时候应该使用 Response.Redirect(url, true)?

    我正在重定向到一个错误页面 其中包含一条经过美化的错误消息Application Error 在 Global asax 中 目前它说 Response Redirect Error aspx true 应该是 Response Redir
  • MongoDB:cursor.toArray 返回 Promise { }

    情况 我写了一个查询 var results db collection diseases find ttl txt regex data options i toArray Problem 然后我打印了results到控制台 if res
  • VBA 中运行时错误 429,但类已注册

    我正在尝试重新创建一个程序 该程序使用 JavaScript 打开与 PLC 的连接 然后在网页上显示各种信息 由于各种原因 我宁愿将其以 MS Access 的形式保存 并且一直在努力寻找合适的 dll 来使用 Jet32X dll 如果
  • Chrome 中的 HTML5 视频边框半径不起作用

    我试图让我的 HTML5 视频具有透明的左上角和左下角圆角 就像使用 border radius 时的行为一样 不幸的是 在 Chrome 中 由于某种原因 border radius 在 HTML 视频标签上不起作用 但在 IE10 和
  • numpy stride_tricks.as_strided 与滚动窗口的列表理解

    在处理滚动窗口时 我以列表理解的方式编写函数 np std x i i framesize for i in range 0 len x framesize hopsize 最近我发现numpy lib stride tricks as s