【发布时间】:2019-05-16 10:33:02
【问题描述】:
要实现pytorch的DataSet类__get_item__()方法,需要支持索引,以便dataset[i]可以用来获取ith样本。
假设我有一个时间序列ser:
2017-12-29 14:44:00 69.90
2017-12-29 14:45:00 69.91
2017-12-29 14:46:00 69.87
2017-12-29 14:47:00 69.85
2017-12-29 14:48:00 69.86
2017-12-29 14:49:00 69.92
2017-12-29 14:50:00 69.90
2017-12-29 14:51:00 70.00
2017-12-29 14:52:00 69.97
2017-12-29 14:53:00 69.99
2017-12-29 14:54:00 69.99
2017-12-29 14:55:00 69.85
因为我需要索引到滚动窗口。我使用以下方法生成窗口长度3 时间序列:
l3_list = list()
def t(x):
l3_list.append(x.copy())
ser.rolling(3).apply(t)
l3_list 变为:
[array([69.9 , 69.91, 69.87]),
array([69.91, 69.87, 69.85]),
array([69.87, 69.85, 69.86]),
array([69.85, 69.86, 69.92]),
array([69.86, 69.92, 69.9 ]),
array([69.92, 69.9 , 70. ]),
array([69.9 , 70. , 69.97]),
array([70. , 69.97, 69.99]),
array([69.97, 69.99, 69.99]),
array([69.99, 69.99, 69.85])]
这样我就可以在 l3_list 中建立索引。即l3_list[i]是ith滑动窗口。有没有更节省内存的方法来做到这一点?
【问题讨论】:
-
我对 pandas 的了解有限,但为什么不是
return ser[i:i+3].copy()in__getitem__? (为什么copy见this answer)