Numpy/Scipy是否将原始值转换为索引时间序列?
我看过numpy/scipy文档,但找不到任何内置函数来实现这一点 我想将代表时间序列的原始数字(温度,正如它发生的那样)从原始状态转换为索引序列(即,第一个值为100,后续值根据第一个原始值进行缩放)。因此,如果原始值是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
(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你不需要告诉别人接受答案,特别是当问题是新的时候。我通常会等到有一个完美的答案(这里有一个内置的),或者在接受最好的答案之前给它几天。