使用 numpy 滚动最大值

2023-11-27

这计算了“滚动最大值”A(类似于滚动平均值)在长度的滑动窗口上K:

import numpy as np
A = np.random.rand(100000)
K = 10
rollingmax = np.array([max(A[j:j+K]) for j in range(len(A)-K)])

但我认为它在性能方面远非最佳。

我知道pandas图书馆有rolling_max,但在我的项目中,我不想使用这个新的依赖项。

问题:有没有一种简单的方法可以仅使用 numpy 计算滚动最大值?


我想这个小技巧使用strides and as_strided将完成以下工作:

def max_rolling1(a, window,axis =1):
        shape = a.shape[:-1] + (a.shape[-1] - window + 1, window)
        strides = a.strides + (a.strides[-1],)
        rolling = np.lib.stride_tricks.as_strided(a, shape=shape, strides=strides)
        return np.max(rolling,axis=axis)

为了进行比较,IS 根据您的算法定义了另一个函数:

def max_rolling2(A,K):
    rollingmax = np.array([max(A[j:j+K]) for j in range(len(A)-K)])
    return rollingmax

和比较timeit在我的笔记本电脑上是:

with :

A = np.random.rand(100000)
K = 10


%timeit X = max_rolling2(A,K)
170 ms ± 19.8 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
%timeit X = max_rolling1(A,K)
> 3.75 ms ± 479 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 numpy 滚动最大值 的相关文章

  • 将字符串转换为带有毫秒和时区的日期时间 - Python

    我有以下 python 片段 from datetime import datetime timestamp 05 Jan 2015 17 47 59 000 0800 datetime object datetime strptime t
  • DreamPie 不适用于 Python 3.2

    我最喜欢的 Python shell 是DreamPie http dreampie sourceforge net 我想将它与 Python 3 2 一起使用 我使用了 添加解释器 DreamPie 应用程序并添加了 Python 3 2
  • 如何在 Sublime Text 2 的 OSX 终端中显示构建结果

    我刚刚从 TextMate 切换到 Sublime Text 2 我非常喜欢它 让我困扰的一件事是默认的构建结果显示在 ST2 的底部 我的程序产生一些很长的结果 显示它的理想方式 如在 TM2 中 是并排查看它们 如何在 Mac 操作系统
  • 打破嵌套循环[重复]

    这个问题在这里已经有答案了 有没有比抛出异常更简单的方法来打破嵌套循环 在Perl https en wikipedia org wiki Perl 您可以为每个循环指定标签 并且至少继续一个外循环 for x in range 10 fo
  • Spark的distinct()函数是否仅对每个分区中的不同元组进行洗牌

    据我了解 distinct 哈希分区 RDD 来识别唯一键 但它是否针对仅移动每个分区的不同元组进行了优化 想象一个具有以下分区的 RDD 1 2 2 1 4 2 2 1 3 3 5 4 5 5 5 在此 RDD 上的不同键上 所有重复键
  • 运行多个 scrapy 蜘蛛的正确方法

    我只是尝试使用在同一进程中运行多个蜘蛛新的 scrapy 文档 http doc scrapy org en 1 0 topics practices html但我得到 AttributeError CrawlerProcess objec
  • 在 NumPy 中获取 ndarray 的索引和值

    我有一个 ndarrayA任意维数N 我想创建一个数组B元组 数组或列表 其中第一个N每个元组中的元素是索引 最后一个元素是该索引的值A 例如 A array 1 2 3 4 5 6 Then B 0 0 1 0 1 2 0 2 3 1 0
  • IRichBolt 在storm-1.0.0 和 pyleus-0.3.0 上运行拓扑时出错

    我正在运行风暴拓扑 pyleus verbose local xyz topology jar using storm 1 0 0 pyleus 0 3 0 centos 6 6并得到错误 线程 main java lang NoClass
  • NameError:名称“urllib”未定义”

    CODE import networkx as net from urllib request import urlopen def read lj friends g name fetch the friend list from Liv
  • 在pyyaml中表示具有相同基类的不同类的实例

    我有一些单元测试集 希望将每个测试运行的结果存储为 YAML 文件以供进一步分析 YAML 格式的转储数据在几个方面满足我的需求 但测试属于不同的套装 结果有不同的父类 这是我所拥有的示例 gt gt gt rz shorthand for
  • 当玩家触摸屏幕一侧时,如何让 pygame 发出警告?

    我使用 pygame 创建了一个游戏 当玩家触摸屏幕一侧时 我想让 pygame 给出类似 你不能触摸屏幕两侧 的错误 我尝试在互联网上搜索 但没有找到任何好的结果 我想过在屏幕外添加一个方块 当玩家触摸该方块时 它会发出警告 但这花了很长
  • 表达式中的 Python 'in' 关键字与 for 循环中的比较 [重复]

    这个问题在这里已经有答案了 我明白什么是in运算符在此代码中执行的操作 some list 1 2 3 4 5 print 2 in some list 我也明白i将采用此代码中列表的每个值 for i in 1 2 3 4 5 print
  • HTTPS 代理不适用于 Python 的 requests 模块

    我对 Python 还很陌生 我一直在使用他们的 requests 模块作为 PHP 的 cURL 库的替代品 我的代码如下 import requests import json import os import urllib impor
  • 循环中断打破tqdm

    下面的简单代码使用tqdm https github com tqdm tqdm在循环迭代时显示进度条 import tqdm for f in tqdm tqdm range 100000000 if f gt 100000000 4 b
  • 通过数据框与函数进行交互

    如果我有这样的日期框架 氮 EG 00 04 NEG 04 08 NEG 08 12 NEG 12 16 NEG 16 20 NEG 20 24 datum von 2017 10 12 21 69 15 36 0 87 1 42 0 76
  • 如何将 PIL 图像转换为 NumPy 数组?

    如何转换 PILImage来回转换为 NumPy 数组 这样我就可以比 PIL 进行更快的像素级转换PixelAccess允许 我可以通过以下方式将其转换为 NumPy 数组 pic Image open foo jpg pix numpy
  • 在Python中重置生成器对象

    我有一个由多个yield 返回的生成器对象 准备调用该生成器是相当耗时的操作 这就是为什么我想多次重复使用生成器 y FunctionWithYield for x in y print x here must be something t
  • 使用基于正则表达式的部分匹配来选择 Pandas 数据帧的子数据帧

    我有一个 Pandas 数据框 它有两列 一列 进程参数 列 包含字符串 另一列 值 列 包含相应的浮点值 我需要过滤出部分匹配列 过程参数 中的一组键的子数据帧 并提取与这些键匹配的数据帧的两列 df pd DataFrame Proce
  • 在 Python 类中动态定义实例字段

    我是 Python 新手 主要从事 Java 编程 我目前正在思考Python中的类是如何实例化的 我明白那个 init 就像Java中的构造函数 然而 有时 python 类没有 init 方法 在这种情况下我假设有一个默认构造函数 就像
  • PyAudio ErrNo 输入溢出 -9981

    我遇到了与用户相同的错误 Python 使用 Pyaudio 以 16000Hz 录制音频时出错 https stackoverflow com questions 12994981 python error audio recording

随机推荐

  • UseWindowsAzureActiveDirectoryBearerAuthentication 如何验证令牌?

    我按照下面的 GitHub 示例来实现跨 WebApp 和 WebApi 的身份验证机制 https github com AzureADSamples WebApp WebAPI OpenIDConnect DotNet 我正在为 Web
  • Angular 圆形模块导入

    我有两个模块 其组件相互使用 所以我必须在 test 中导入 word 在 word 中导入 test gt 抛出错误 我该怎么办 模块 测试 NgModule declarations AppTest1Component AppTest2
  • Websphere 所有日志都将转到 SystemOut.log

    我在我的应用程序中使用 Log4j 并有一些用于调试和错误的附加程序 我在tomcat上测试过 工作正常 在各自的文件中生成所有日志 但是当我在 WAS6 1 上部署代码时 所有日志仅在 SystemOut log 内生成 请帮忙 问题可能
  • VS 11 Beta 无法启动进程,因为尚未提供文件名

    这是我构建测试项目时得到的结果 这样我就无法运行我的测试 因为 VS 没有发现它们 查看留言 Unexpected error detected Check the Tests Output Pane for details 在窗口底部 现
  • 我怎样才能让 gitbash 找到 javac 命令?

    我创建了我的 git 存储库并提交了它 插入一个java文件并想要编译它 但它给了我这个 Bernard BERNARD PC c users bernard desktop git2 master javac TestGUI java s
  • Clang 链接器问题(从源代码到 gcc-snapshot)

    我似乎无法让它发挥作用 我配置了 with gcc toolchain 在 equals 之后我把 gcc 所在的目录 usr lib gcc snapshot bin 我还查看了 clang 链接器问题 但我不知道如何获得接受的答案来找到
  • Volley Android 网络库

    关于在我的项目中使用 Volley 我有几个问题 这个库可以在任何 Java 项目中使用还是只能在 Android 项目中使用 我看到多个分支here并且没有关于从哪个分支开始的文档 我应该从哪个分支开始 您如何将该库集成到您自己的项目中
  • Typescript:Promise 的子类/扩展:不引用 Promise 兼容的构造函数值

    我正在尝试取消我的asyncTypescript 中的方法调用 为此 我创建了一个新的 Promise 类型 它继承自Promise class CancelablePromise
  • 考虑每行上所有可能的排列,查找元胞数组的唯一行

    我有元胞数组A维度的m k 我想保留行A unique 最多为 k 个单元格 棘手 的部分是 最多为 k 个单元格 考虑k细胞中的i第 行A A i 可能会有一排j of A A j 这相当于A i 直到重新排序k细胞 这意味着例如如果k
  • git-创建一个分支,稍后将推送到远程

    我有一个脚本 它会自动创建一个新分支 其名称基于外部信息 JIRA 票证 在提交并推送一些代码之前我不想创建远程分支 但我不想必须执行 git push set upstream origin 换句话说 我想在推送之前设置上游 git ch
  • 如何加密密码以便稍后将其保存在数据库或文本文件中?

    我希望我的应用程序将加密的密码保存在数据库或文本文件中 假设任何人都可以打开数据库或文本文件 我该如何做到这一点 复制 加密 散列数据库中的纯文本密码 不重复我要求提供特定于 NET 的代码 编辑 我正在保存密码以供以后使用 我需要对其进行
  • 创建单个 python 可执行模块

    伙计们 我在模块中有很多 python 代码 这些代码驻留在多个 python 包中 现在我需要创建单个 python 可执行模块或文件 其中将包含所有这些文件 因此它将在 Windows 和 Linux 服务器上运行 有哪些可能的解决方案
  • 用默认值初始化字段是多余的

    我真的可以信任 NET 来初始化字段 如整数 结构等 吗 如果我仍然想初始化这些字段怎么办 会产生什么影响 The C 规范第 305 页上的说明 17 4 4 字段的初始值 无论是静态字段还是实例字段 都是该字段的默认值 第 12 2 节
  • GWT 日志记录设置

    我正在使用 GWT 2 1 java util logging仿真记录客户端消息 根据文档 提供了两个适用于客户端日志记录的格式化程序 TextFormatter 和 HTMLFormatter 任何人都可以提供有关如何设置格式化程序并将其
  • 我正在尝试复制文件,但收到错误消息

    我是 postgres 的新手 可能缺少一些愚蠢的东西 例如 我的目录的正确名称 有人可以指导我吗 我正在遵循 Anthony DeBarros 的 实用 SQL 一书的说明 Code copy us counties 2010 from
  • easy_install-2.7 的问题

    安装 easy install 并尝试使用它来安装 python 包后 它失败了 root server easy install 2 7 pip Searching for pip Reading http pypi python org
  • android 设置特定时间通知

    我意识到这个问题以前已经被问过 但我对这个问题一筹莫展 我有一个警报管理器来设置通知 public void to reminder View view Intent intent new Intent this Notification
  • 从向量创建Mat

    我对计算机视觉和 opencv 库非常陌生 我已经进行了一些谷歌搜索 试图找到如何从 Point2fs 向量制作新图像 但没有找到任何有效的示例 我见过vector
  • Java 和 Mojave 的强化运行时

    我目前分发一个 Java 应用程序 打包并签名 using pkgbuild在 macOS 上 最近 苹果警告开发者 在即将发布的 macOS 版本中 Gatekeeper 将要求开发人员 ID 签名的软件经过公证的由苹果公司 阅读公证文件
  • 使用 numpy 滚动最大值

    这计算了 滚动最大值 A 类似于滚动平均值 在长度的滑动窗口上K import numpy as np A np random rand 100000 K 10 rollingmax np array max A j j K for j i