Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 时间序列运算_Python_Scipy_Pandas_Time Series - Fatal编程技术网

Python 时间序列运算

Python 时间序列运算,python,scipy,pandas,time-series,Python,Scipy,Pandas,Time Series,我对熊猫不熟悉。我有一个时间序列数据。我怎样才能轻松地执行以下操作 我有一个叫做输入的2d矩阵。每行有5个元素。那里有很多排 输入[t,:]=[f1,f2,f3,f4,f5] 1我需要计算样本之间的相对差异 i、 e.rel[t,:]=input[t,:]-input[t-1,:]/input[t-1,:] 2我需要创建一个尺寸为80的滑动窗口 i、 e.赢[t,:]=[rel[t,:],rel[t-1,:],…,rel[t-79,:]] 我如何在Pandas或任何其他框架(如scikit.ti

我对熊猫不熟悉。我有一个时间序列数据。我怎样才能轻松地执行以下操作

我有一个叫做输入的2d矩阵。每行有5个元素。那里有很多排

输入[t,:]=[f1,f2,f3,f4,f5]

1我需要计算样本之间的相对差异

i、 e.rel[t,:]=input[t,:]-input[t-1,:]/input[t-1,:]

2我需要创建一个尺寸为80的滑动窗口

i、 e.赢[t,:]=[rel[t,:],rel[t-1,:],…,rel[t-79,:]]


我如何在Pandas或任何其他框架(如scikit.timeseries)中做到这一点。

这些文档对这些类型的操作非常全面

见:

一,


2

这些文件对这些类型的操作非常全面

见:

一,


2

您可以用普通的numpy实现这两个功能,尽管熊猫可能会有特定的功能使其更简单。但是:

rel = np.diff(input) / input[:-1]

我会的

如果输入有多行,您仍可以按以下方式执行上述操作:

rel = np.diff(input, axis=1) / input[:, :-1]
win = as_strided(rel, shape=(rel.shape[0], rel.shape[1]-79, 80),
                 strides=rel.strides + rel.strides[1:])

尽管你可能想玩“形状”和匹配的步幅,以获得你想要的确切窗口形状。

你可以在普通numpy中同时做这两件事,尽管熊猫可能会有特定的功能,使它更容易。但是:

rel = np.diff(input) / input[:-1]

我会的

如果输入有多行,您仍可以按以下方式执行上述操作:

rel = np.diff(input, axis=1) / input[:, :-1]
win = as_strided(rel, shape=(rel.shape[0], rel.shape[1]-79, 80),
                 strides=rel.strides + rel.strides[1:])

尽管您可能想通过“形状”和匹配的步幅来获得您想要的确切窗口形状。

如果输入有k维,该怎么办?@siamii您希望如何准确计算相对差异或窗口k维数据?当然可以,但是你需要定义你想要做什么。我的意思是输入有k列。因此,不是每行1个元素,而是每行有k个元素。每行代表一个时间步。我的数据是2d矩阵。我更新了问题谢谢,但我想我解释得不够清楚。你最初的答案很好,每个元素都有k个特征。我需要计算时间步长之间的差异和窗口。我认为您的follwup答案是水平计算功能之间的差异,而不是垂直计算时间步长之间的差异。正当在原始答案中,您可能只需要更改shape=rel.shape[0]-79,80*k,但我不确定。如果输入有k维,该怎么办?@siamii您希望如何准确计算相对差异或打开k维数据的窗口?当然可以,但是你需要定义你想要做什么。我的意思是输入有k列。因此,不是每行1个元素,而是每行有k个元素。每行代表一个时间步。我的数据是2d矩阵。我更新了问题谢谢,但我想我解释得不够清楚。你最初的答案很好,每个元素都有k个特征。我需要计算时间步长之间的差异和窗口。我认为您的follwup答案是水平计算功能之间的差异,而不是垂直计算时间步长之间的差异。正当也许你需要改变的是shape=rel.shape[0]-79,80*k,但我不确定。