Numpy/Scipy是否将原始值转换为索引时间序列?

Numpy/Scipy是否将原始值转换为索引时间序列?,numpy,statistics,scipy,time-series,Numpy,Statistics,Scipy,Time Series,我看过numpy/scipy文档,但找不到任何内置函数来实现这一点 我想将代表时间序列的原始数字(温度,正如它发生的那样)从原始状态转换为索引序列(即,第一个值为100,后续值根据第一个原始值进行缩放)。因此,如果原始值是(15,7.5,5),则索引值将是(100,50,33)(心理计算,因此是int值) 这相当容易自己编写代码,但如果可能的话,我想使用内置的。自制是: def indexise(seq,base=0,scale=100): if not base: ba

我看过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)

如果
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你不需要告诉别人接受答案,特别是当问题是新的时候。我通常会等到有一个完美的答案(这里有一个内置的),或者在接受最好的答案之前给它几天。