- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我需要使用 numpys 加权平均函数重新采样一些数据 - 但它不起作用......
这是我的测试用例:
import numpy as np
import pandas as pd
time_vec = [datetime.datetime(2007,1,1,0,0)
,datetime.datetime(2007,1,1,0,1)
,datetime.datetime(2007,1,1,0,5)
,datetime.datetime(2007,1,1,0,8)
,datetime.datetime(2007,1,1,0,10)
]
df = pd.DataFrame([2,3,1,7,4],index = time_vec)
没有权重的正常重采样工作正常(这里建议使用 lambda 函数作为how
的参数:Pandas resampling using numpy percentile? 谢谢!):
df.resample('5min',how = lambda x: np.average(x[0]))
但是如果我尝试使用一些权重,它总是返回一个 TypeError: Axis must be specified when a 的形状和权重不同
:
df.resample('5min',how = lambda x: np.average(x[0],weights = [1,2,3,4,5]))
我尝试了许多不同数量的权重,但效果并没有变得更好:
for i in xrange(20):
try:
print range(i)
print df.resample('5min',how = lambda x:np.average(x[0],weights = range(i)))
print i
break
except TypeError:
print i,'typeError'
如果有任何建议,我会很高兴。
最佳答案
这里的简短答案是,lambda
中的权重需要根据正在平均的序列的长度动态创建。此外,您需要小心正在操作的对象的类型。
我用来计算我认为你想要做的事情的代码如下:
df.resample('5min', how=lambda x: np.average(x, weights=1+np.arange(len(x))))
与给您带来问题的线路相比,有两个区别:
x[0]
现在只是 x
。 lambda
中的 x
对象是一个 pd.Series
,因此 x[0]
只给出第一个系列中的值(value)。在第一个示例中,这没有引发异常(没有权重),因为当 c
时,np.average(c)
仅返回 c
一个标量。但我认为即使在这种情况下,它实际上计算的平均值也不正确,因为每个采样子集只是返回其第一个值作为“平均值”。
权重是根据重新采样的系列
中的数据长度动态创建的。您需要执行此操作,因为您的 lambda
中的 x
可能是每个计算时间间隔长度不同的 Series
。
我解决这个问题的方法是通过一些简单的类型调试,用正确的函数定义替换lambda
:
def avg(x):
print(type(x), x.shape, type(x[0]))
return np.average(x, weights=np.arange(1, 1+len(x)))
df.resample('5Min', how=avg)
这让我可以看看 x
变量发生了什么。希望有帮助!
关于python - 使用带有权重的 numpy.average 对 pandas 数组进行重新采样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26370831/
我正在努力寻找平均列的正确语法。我所拥有的——来自 RavenDB Studio 编辑器: map : from area in docs.Level5_AdministrativeAreas sel
double average = LongStream .of(-4480186093928204294L, -1340542863544260591L, -600429628624003927
我在 MySQL 表中有梦幻足球联赛的数据。我想查询一个 php 页面的数据。 我如何创建一个查询来计算球队得分与该特定年份联盟平均得分的比较? 我的(简化的)数据表如下所示: 游戏 table :
干杯,伙计们。我被要求让这段代码在学习挑战中发挥作用,但我不确定如何处理“array.average()”部分,因为它不是一个函数。 我被问到的是: var array = [5,44,23,11,5
我刚刚开始学习 Java 中的数据结构和算法(从数组开始)。我有两个问题。 在我看来,算法执行中的“步骤”是实际上是算法访问的数组的位置。因为他们说数组中的插入一步发生,因为数据项被简单地插入到第一个
嗨,我正在使用谷歌分析 api gapi查找网站的“平均 session 持续时间”和“每次访问浏览的平均页面” 我为此创建了一个仪表板,其值为 00:02:30和 4.58分别 ... 我使用以下代
SELECT username, (SUM(rating)/count(*)) as TheAverage, count(*) as TheCount FROM ratings WHERE month
在 Office Excel AVERAGE 函数示例中,参数始终使用逗号作为分隔符。但是,AVERAGE(A2:C2 B1:B10) 在 Excel 中也有效。 我的问题:有什么区别以及为什么?谢谢
我的代码: name = ["AAAAA 4 2 1 2 4 2 4 4 5 2 2 1 5 2 4 3 1 1 3 3 5", "BBB 5 2 1 2 4 5 4 4 1 2 2 2 4 4
我一直在探索适用于 Android 的 Firebase Analytics,发现控制台的仪表板显示用户参与事件,该事件显示平均屏幕时间,如“hh:mm:ss”,还通过获取以下总和来显示“值”参数的平
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我使用维基百科文章中定义的折叠更改: http://en.wikipedia.org/wiki/Fold_change 我现在处理倍数变化已经有一段时间了,但从来没有真正需要计算我所有倍数变化的平均倍
这仅与编程相关 - 与颜色及其表示有更多关系。 我正在开发一个非常底层的应用程序。我在内存中有一个字节数组。那些是字符。它们是用抗锯齿渲染的:它们的值从 0 到 255,0 表示完全透明,255 完全
我正在尝试在用户界面中实现一个监视器,该监视器显示由海龟品种(海龟自己)共享的变量的平均值。有谁知道收集所有值的方法,将它们加在一起并除以海龟的数量以获得值或知道更简单的方法? 最佳答案 如果每只海龟
我试图在我的 OpenGL 程序中将骨架动画从矩阵切换到四元数,但我遇到了一个问题: 给定多个单位四元数,我需要得到一个四元数,当用于变换向量时,将给出一个向量,该向量是每个四元数单独变换的向量的平均
输入: Clickhouse 表A business_dttm(日期时间) 金额( float ) 我需要在每个 business_dttm 上计算 15 分钟(或最后 3 条记录)的移动总和 例如
我正在尝试找到一种方法来计算移动累积平均值,而不存储迄今为止收到的计数和总数据。 我想出了两种算法,但都需要存储计数: 新平均值 = ((旧计数 * 旧数据) + 下一个数据)/下一个计数 新平均值
在我的 SQL 脚本中,我想标准化来自这样的子查询的值 select y/avg(y) from ( select x*z as y from test_table )T 我知道这个解决方案会起
由于 Controller 损坏,文件在从 USB 闪存驱动器下载时会随机损坏。我下载了同一个文件的多个副本,每个副本的错误似乎通常是唯一且随机的。 因此,我需要一个脚本来比较同一文件的几个(3 到
我正在尝试解决一个非常简单的算法分析(显然对我来说不是那么简单)。 算法是这样的: int findIndexOfN(int A[], int n) { // this algorithm looks
我是一名优秀的程序员,十分优秀!