将 pandas 函数实现为 numpy 函数

2024-02-21

有没有办法可以转换xy_mean使用 pandas 库计算的函数就像y_mean功能。我发现 pandas 功能Y_mean = pd.Series(PC_list).rolling(number).mean().dropna().to_numpy()比 numpy 版本快得多ym = (np.convolve(PC_list, np.ones(shape=(number)), mode='valid')/number)[:-1]。方程为xy_mean将会((index of value)*value + (index of value)*value)/number索引号取决于变量numbers 值。因此,下面示例的第一组计算将是(457.334015*1 + 424.440002*2 +394.795990*3)/number下一组数字是 (424.440002*2 +394.795990*3 + 408.903992*4)/number等等。如果number = 4第一组计算将是(457.334015*1 + 424.440002*2 +394.795990*3 +408.903992*4)/number。设定的平均值计算将持续到结束PC_list array.

变量:

number = 3
PC_list= np.array([457.334015,424.440002,394.795990,408.903992,398.821014,402.152008,435.790985,423.204987,411.574005,
404.424988,399.519989,377.181000,375.467010,386.944000,383.614990,375.071991,359.511993,328.865997,
320.510010,330.079010,336.187012,352.940002,365.026001,361.562012,362.299011,378.549011,390.414001,
400.869995,394.773010,382.556000])

香草Python版本:

y_mean = sum(PC_list[i:i+number])/number
xy_mean = sum([x * (i + 1) for i, x in enumerate(PC_list[i:i+number])])/number

Numpy 版本:

y_mean = (np.convolve(PC_list, np.ones(shape=(number)), mode='valid')/number)[:-1]
xy_mean = (np.convolve(PC_list, np.arange(number, 0, -1), mode='valid'))[:-1]

熊猫版

Y_mean = pd.Series(PC_list).rolling(number).mean().dropna().to_numpy()
xy_mean = ? 

您需要为此定义一个自定义函数,并将其传递给rolling.apply https://pandas.pydata.org/docs/reference/api/pandas.core.window.rolling.Rolling.apply.html:

>>> multiplier = np.arange(0, number)

>>> def xymean(series):
        return series.mul(multiplier).sum()

>>> pd.Series(PC_list).rolling(number).apply(xymean).dropna().to_numpy()[:-1]

array([2490.601989, 2440.743958, 2409.067016, 2413.002044, 2510.497985,
       2543.348939, 2516.922974, 2459.627961, 2418.983948, 2335.007966,
       2280.283019, 2288.94702 , 2300.19998 , 2279.389953, 2212.294951,
       2080.693968, 1978.774017, 1960.123047, 1989.229066, 2061.27304 ,
       2137.145019, 2167.67804 , 2175.047058, 2221.807067, 2290.639036,
       2361.986998, 2376.473021])

>>> (np.convolve(PC_list, np.arange(number, 0, -1), mode='valid'))[:-1]
 
array([2490.601989, 2440.743958, 2409.067016, 2413.002044, 2510.497985,
       2543.348939, 2516.922974, 2459.627961, 2418.983948, 2335.007966,
       2280.283019, 2288.94702 , 2300.19998 , 2279.389953, 2212.294951,
       2080.693968, 1978.774017, 1960.123047, 1989.229066, 2061.27304 ,
       2137.145019, 2167.67804 , 2175.047058, 2221.807067, 2290.639036,
       2361.986998, 2376.473021])

然而,由于apply。此外,您的numpy版本创建xy_sum相对于xy_mean,使其计算mean你需要:

>>> (np.convolve(PC_list, np.arange(number, 0, -1), mode='valid')/number)[:-1]

array([830.200663  , 813.58131933, 803.02233867, 804.33401467,
       836.83266167, 847.78297967, 838.97432467, 819.875987  ,
       806.32798267, 778.33598867, 760.09433967, 762.98234   ,
       766.73332667, 759.796651  , 737.43165033, 693.564656  ,
       659.591339  , 653.374349  , 663.07635533, 687.09101333,
       712.381673  , 722.55934667, 725.015686  , 740.60235567,
       763.54634533, 787.32899933, 792.15767367])

>>> def xymean(series):
        return series.mul(multiplier).mean()

>>> pd.Series(PC_list).rolling(number).apply(xymean).dropna().to_numpy()[:-1]

array([830.200663  , 813.58131933, 803.02233867, 804.33401467,
       836.83266167, 847.78297967, 838.97432467, 819.875987  ,
       806.32798267, 778.33598867, 760.09433967, 762.98234   ,
       766.73332667, 759.796651  , 737.43165033, 693.564656  ,
       659.591339  , 653.374349  , 663.07635533, 687.09101333,
       712.381673  , 722.55934667, 725.015686  , 740.60235567,
       763.54634533, 787.32899933, 792.15767367])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 pandas 函数实现为 numpy 函数 的相关文章

  • SparkSession 初始化需要很长时间

    SparkSession 初始化需要很长时间才能成功 这是我的代码 import findspark findspark init import pyspark from pyspark sql import SparkSession sp
  • 在 Windows 上的 python2.5 上安装 Openpyxl

    我努力了easy install install openpyxl and python setup install 两者都失败了 我也尝试过easy install openpyxl并再次失败 我包括了我得到的输出 当我尝试时easy i
  • 如何更改 Python 函数的表示形式?

    gt gt gt def hehe return spam gt gt gt repr hehe
  • 如何使用 matplotlib 面向对象的 API 设置轴刻度和刻度标签

    我需要一些在 Python2 7 下的 Matplotlib pyplot 中绘图的帮助 我想生成一个具有以下 x 轴的图 x 轴应该是这样 https i stack imgur com zcosX jpg 我到目前为止通过使用myaxi
  • 无法解析 ReferenceProperty -- App Engine

    我遇到了一个错误 无法找出其根本原因 错误如下 ReferenceProperty 无法解析 u StatusLog STATUSLOGSID 此错误仅有时发生 大约一天一次或两次 生成此错误的脚本成功的次数多于失败的次数 该错误最奇怪的事
  • Python 调试器是否会介入生成器?

    我目前正在使用 NetBeans IDE 和 Jython 2 5 1 当逐步调试我的项目时 一旦遇到生成器的迭代 调试器就会直接转到代码末尾 输出工作正常 但是一旦满足第一个生成器就无法进行逐步调试 这是所有 Python IDE 中 P
  • 使用存储的密钥作为环境变量

    我有一个秘密密钥存储在 GCP 的秘密管理器中 我们的想法是使用该密钥通过云功能获取预算列表 现在 我可以从代码中访问该密钥 但我面临的问题是我需要使用该密钥设置一个环境变量 这是我添加密钥的方式 如果您的本地目录中有该文件 但是还有其他方
  • sqlalchemy,使用反向包含(不在)子列值列表中进行选择

    我在flask sqlalchemy 中有一个典型的帖子 标签 与一篇帖子相关的许多标签 关系 并且我想选择我提供的列表中未标记任何标签的帖子 首先 我建立的模型 class Post db Model id db Column db In
  • 从 Java 调用 Python 代码时出现问题(不使用 jython)

    我发现这是从 java 运行 使用 exec 方法 python 脚本的方法之一 我在 python 文件中有一个简单的打印语句 但是 我的程序在运行时什么也没做 它既不打印Python文件中编写的语句 也不抛出异常 程序什么都不做就终止了
  • 编译器在函数名称前添加下划线前缀的原因是什么?

    当我看到 C 应用程序的汇编代码时 如下所示 emacs hello c clang S O hello c o hello s cat hello s 函数名称以下划线作为前缀 例如callq printf 为什么这样做以及它有什么优点
  • 在类方法 Python 中调用多处理

    最初 我有一个类来存储一些处理后的值 并通过其他方法重用这些值 问题是当我尝试将类方法划分为多个进程以加速时 python 生成了进程 但它似乎不起作用 正如我在任务管理器中看到的那样 只有 1 个进程在运行 并且结果从未传递 我做了几次搜
  • 深度学习——一些关于caffe的幼稚问题

    我试图了解 caffe 的基础知识 特别是与 python 一起使用 我的理解是模型定义 比如给定的神经网络架构 必须包含在 prototxt file 当您使用数据训练模型时 prototxt 您将权重 模型参数保存到 caffemode
  • 如何更改Python中的全局变量[重复]

    这个问题在这里已经有答案了 我正在尝试更改程序中的变量 我在程序开始时声明了一个全局变量 我想在程序中的不同函数中更改该变量 我可以通过再次声明函数内的变量来做到这一点 但我想知道是否有更好的方法来做到这一点 下面是一些测试代码来解释我的意
  • Django populate() 不可重入

    当我尝试在生产环境中加载 Django 应用程序时 我不断收到此消息 我尝试了所有的 stackoverflow 答案 但没有任何解决办法 任何其他想法 我使用的是 Django 1 5 2 和 Apache Traceback most
  • 在IPython笔记本中自动播放声音

    我经常在 IPython 笔记本中运行长时间运行的单元 我希望笔记本在单元完成执行时自动发出蜂鸣声或播放声音 有没有办法在 iPython 笔记本中执行此操作 或者我可以在单元格末尾放置一些命令来自动播放声音 我正在使用 Chrome 如果
  • 无法使用 Python 3 编写的 gzip.open() 将压缩文件上传到云存储

    当我尝试在 Cloud Shell 实例上使用 python 脚本将压缩的 gzip 文件上传到云存储时 它总是上传一个空文件 这是重现错误的代码 import gzip from google cloud import storage s
  • 计算列表中的子列表

    L 2 4 5 6 2 1 6 6 3 2 4 5 3 4 5 我想知道任意子序列出现了多少次 s 2 4 5 例如会返回2次 I tried L count s 但它不起作用 因为我认为它期望寻找类似的东西 random numbers
  • 将 PySpark RDD 作为新列添加到 pyspark.sql.dataframe

    我有一个 pyspark sql dataframe 其中每一行都是一篇新闻文章 然后我有一个 RDD 来表示每篇文章中包含的单词 我想将单词的 RDD 作为名为 单词 的列添加到我的新文章数据框中 我试过 df withColumn wo
  • python生成器太慢,无法使用它。我为什么要使用它?什么时候?

    最近我收到一个问题 哪一个是最快的 iterator list comprehension iter list comprehension and generator 然后编写简单的代码如下 n 1000000 iter a iter ra
  • 关闭 IPython Notebook 中的自动保存

    我正在寻找一种方法来关闭 iPython 笔记本中的自动保存 我已经通过 Google Stack Overflow 搜索看到了有关如何打开自动保存的参考资料 但我想要相反的内容 关闭自动保存 如果这是可以永久设置的东西而不是在每个笔记本的

随机推荐

  • 如何根据文件名的第一部分和第二部分创建文件夹并将文件移动到该文件夹​​中?

    我创建了以下批处理脚本来根据今天的日期创建一个文件夹 然后根据文件名将文件分组到文件夹中 例如文件 JIM BRICKMAN QPS avi JIM BRICKMAN Slice avi JIM BRICKMAN Slice jpg 被移动
  • 在运行时扩展/修改 NHibernate 类

    很抱歉 如果已经有一个正确的答案 但我还没有找到 我正在使用 NH3 并且有一个用例 我想将 Set 添加到类实现特定接口的任何实体上 我有一个配置生成器类 因此我可以在创建会话工厂之前进行这些更改 鉴于这个简化的例子 public cla
  • 用于记录在给定项目/文件/方法上花费的时间的 Eclipse 插件? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我经常发现自己在同一个月 一周内从事 2 个或更多项目 有时我被迫在白天在项目之间切换 正确记录每个项目
  • 连接/断开数据库的最佳实践是什么?

    我想知道如何在 MEAN 堆栈应用程序中连接到数据库 特别是 何时应创建与数据库的连接以及何时应销毁与数据库的连接 我应该在每个新的 HTTP 请求上创建和销毁连接 还是应该存储曾经创建的连接并尽可能长时间地将其用于任何后续请求 我使用 M
  • C++ freeRTOS任务,非静态成员函数的无效使用

    哪里有问题 void MyClass task void pvParameter while 1 this gt update void MyClass startTask xTaskCreate this gt task Task 204
  • 如何重新创建以前的活动?

    我有一个主要活动 我们称之为 A 和第二个活动 我们称之为 B 用于更改应用程序的语言 关键是 当我单击按钮更改语言时 我也会调用recreate B 改变它的语言 到这里为止就OK了 当我返回主活动 A 并且它尚未更新语言时 问题就出现了
  • Swift tableView insertRows 在顶部,同时保持正确的索引

    Problem 我需要顶部填充tableView 以保持现有单元格的内容加载 例如播放视频 ref child live mode queryOrderedByKey queryLimited toLast 200 observe chil
  • 为 WebdriverIO/Cucumber 框架生成 HTML 报告

    我在用WebdriverIO 黄瓜 https github com webdriverio wdio cucumber framework wdio cucumber framework 用于我的测试自动化 我想在 HTML 文件中获取测
  • 在 PhoneGap 平台上使用 OpenID

    我目前正在使用 PhoneGap 开发一个应用程序 我的应用程序使用 OpenID 来验证用户身份 成功验证用户身份后 它应该返回到我的应用程序 我已使用 location href 将页面重定向到本地地址 例如 iOS 应用程序的 fil
  • 为什么 XP 上的 IE8 无法使用 JQuery 正确读取 XML?

    在 data xml 中给出此 XML
  • 如何记录 Python 崩溃?

    我正在树莓派中运行 python 代码 该代码应该永远有效 然而 几个小时后它崩溃了 由于它在远程计算机上运行 因此我看不到它在崩溃期间给出的消息 如何将此消息存储在文件中以便我可以看到问题所在 这是在linux下自主执行的吗 或者我应该编
  • 从 nlohmann json 访问元素

    我的 JSON 文件类似于此 active false list1 A B C objList key1 value1 key2 0 1 现在使用 nlohmann json 我已经设法存储它 并且当我进行转储时jsonRootNode d
  • c# readonly DataGridView 与一个启用的单元格

    我有只读 datagridview 在某些特定情况下 我需要在双击行后启用一个单元格 使 readonly false 并将焦点放在当前行中的该特定单元格上 例如输入它 光标应该开始闪烁 I have private void dataGr
  • 检查文档状态 DocuSign

    如何检查文档是否已使用 DocuSign API 签名 是否存在可以让我了解文档状态的 API 服务 我尝试获取 已完成 文件夹中的所有对象 但响应不包含 documentId 并且我不知道每个对象是哪个文档 DocuSign 轨道接受者状
  • 有没有免费的库可以实现类似于MSMQ(Microsoft Message Queuing)的消息队列?

    我有兴趣使用一个免费库 该库具有类似于 MSMQ 的功能 可以在 win 表单应用程序中的 3 个应用程序域之间发送 接收消息 我只需要专用队列功能 没有公共队列或 AD 支持 请提供链接和一些优点 缺点 如果您认为需要更多积分来了解更详细
  • C语言中\n是多字符吗?

    我读到 n 由 CR 和 LF 组成 每个都有自己的 ASCII 代码 那么C中的 n是用单个字符表示还是多字符表示呢 Edit 请具体说明您的答案 而不是简单地说 是的 or 不 不是 在 C 程序中 它是一个字符 n 代表行尾 然而 某
  • JavaCV 录像机方向在纵向模式下不正确

    嗨 我正在使用https github com bytedeco javacv https github com bytedeco javacv 用于录制视频 使用横向模式时方向很好 但当我将方向更改为纵向模式时 视频旋转 90 度 任何人
  • 使用 NHibernate 时出错

    考虑到这个例子 https www hibernate org 362 html作为基本示例 我创建了该应用程序 但是当我执行该应用程序时出现以下错误 The ProxyFactoryFactory was not configured 使
  • 在 Bootstrap 4 中的模式中滚动下拉菜单

    我目前正在从 Bootstrap4 alpha 迁移到 Bootstrap4 stable 到目前为止 一切都很好 除了我的模态出现的这个问题 我在任何地方都使用下拉菜单 包括包含许多项目的下拉菜单 以前 滚动效果很好 现在它没有 当我滚动
  • 将 pandas 函数实现为 numpy 函数

    有没有办法可以转换xy mean使用 pandas 库计算的函数就像y mean功能 我发现 pandas 功能Y mean pd Series PC list rolling number mean dropna to numpy 比 n