如何计算python中的平均值和最大值增加,减少时间序列

时间:2015-12-08 22:51:42

标签: python numpy feature-extraction

我正在尝试用Python计算时间序列的这些功能:

  • 平均增加和减少
  • 最大增加和减少

但我无法弄清楚如何以快速,简单和正确的方式做到这一点。也许是numpy或scipy。

我很高兴有任何帮助。

我找到了以下这些特征的数学解释:

mean max increase decrease calculation

非常感谢

2 个答案:

答案 0 :(得分:3)

您可以使用np.diff来计算数组中连续元素之间的差异,然后使用布尔索引来选择正值(对应于增量)或负值(对应于减少)。从那里,你可以采取均值,最大等。

例如:

x = np.random.random_integers(0, 10, 20)
print(x)
# [10 10  5  4  2 10  8  9 10  2  2  0  7  3  8  6  4  1  3 10]

dx = np.diff(x)
print(dx)
# [ 0 -5 -1 -2  8 -2  1  1 -8  0 -2  7 -4  5 -2 -2 -3  2  7]

increases = dx[dx > 0]
print(increases)
# [8 1 1 7 5 2 7]

print(increases.mean())
# 4.42857142857

print(increases.max())
# 8

答案 1 :(得分:0)

如果数据在列表中,您可以将其分割。例如:

a = [2,6,8,4,5,9]
b = a[:-1]
c = a[1:]

所以你可以用

获得最大的增长
max([j-i for (i,j) in zip(b,c)])

如果数据很大,使用numpy将是方式,它实际上会更容易,只需制作" a"是一个numpy.array然后你可以得到最大的增加:

numpy.max(c-b)