【问题标题】:Numpy/Scipy convert raw values to indexed timeseries?Numpy/Scipy 将原始值转换为索引时间序列?
【发布时间】:2013-10-01 17:00:14
【问题描述】:

我查看了 numpy/scipy 文档,但找不到任何内置函数来执行此操作。

我想将表示时间序列的原始数字(温度,碰巧)从原始状态转换为索引序列(即第一个值为 100,后续值根据第一个原始值进行缩放)。因此,如果原始值是 (15,7.5,5),则索引值将是 (100,50,33)(心理计算,因此是 int 值)。

这很容易编写自己的代码,但如果可能的话,我想使用内置函数。自制软件是:

def indexise(seq,base=0,scale=100):
    if not base:
        base=seq[0]
    return (i*scale/base for i in seq)

【问题讨论】:

    标签: numpy statistics scipy time-series


    【解决方案1】:

    如果 seq 是一个 numpy 数组,那么您可以使用一个 numpy 向量化操作 scale*seq/base 来代替 (i*scale/base for i in seq)

    以下是我可能会如何修改您的函数:

    import numpy as np
    
    def indexise(seq, base=None, scale=100):
        seq = np.asfarray(seq)
        if base is None:
            base = seq[0]
        result = scale*seq/base
        return result
    

    例如,

    In [14]: indexise([15, 7.5, 5, 3, 10, 12])
    Out[14]: 
    array([ 100.        ,   50.        ,   33.33333333,   20.        ,
             66.66666667,   80.        ])
    
    In [15]: indexise([15, 7.5, 5, 3, 10, 12], base=10)
    Out[15]: array([ 150.,   75.,   50.,   30.,  100.,  120.])
    

    【讨论】:

    • 酷,谢谢!我很惊讶现在还没有这样的东西。
    • 对不起,Marcin,我从没想过要冒犯我,我没有看到您的观点,只是阅读并评论了您的评论。
    • @Greg 您不需要告诉人们接受答案,尤其是当问题是新问题时。我通常会等到有一个完美的答案(这里提供一个内置的),或者在接受最好的答案之前给它几天。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    • 2013-12-09
    • 1970-01-01
    • 2019-12-04
    • 2020-08-06
    • 1970-01-01
    • 2018-10-12
    相关资源
    最近更新 更多