【发布时间】:2017-05-10 14:45:31
【问题描述】:
我已经使用 genfromtxt 和 hstack 从 csv 中读取了一些数据以连接数据,从而形成 (5413260,) 的形状(大约需要 17 分钟,~1GB .npy 保存文件)
数据格式为:
timedelta64 1, temp1A, temp 1B, temp1C, ...
timedelta64 2, temp2A, temp 2B, temp2C, ...
>>> data[1:3]
array([ ('2009-01-01T18:41:00', 755, 855, 755, 855, 743, 843, 743, 843, 2),
('2009-01-01T18:43:45', 693, 793, 693, 793, 693, 793, 693, 793, 1)],
dtype=[('datetime', '<M8[s]'), ('sensorA', '<u4'), ('sensorB', '<u4'), ('sensorC', '<u4'), ('sensorD', '<u4'), ('sensorE', '<u4'), ('sensorF', '<u4'), ('sensorG', '<u4'), ('sensorH', '<u4'), ('signal', '<u4')])
我想对 temps 做增量:
timedelta64 1, temp1A - temp1B, temp 1B - temp1C, ...
并填充:
timedelta64 2 - timedelta64 1
timedelta64 1 + shift, 0, 0, 0, CONSTANT, ...
我现在是:
- 遍历 numpy arrayA (arrayA[i], arrayA[i+1])
- 计算 row_i 的增量,追加到 numpy arrayB
- 计算row_i+1和row_i的时间差
- 迭代添加到时间戳,用零/常量填充,追加到 numpy arrayB
这是非常低效的 - 到目前为止已经花费了 12 多个小时,我预计需要 100 多天才能完成。
什么是矢量化方法?
我正在考虑一个向量操作来首先计算增量,然后我不确定如何快速批处理并插入缺失时间戳的填充。
另外,reshape -> diff -> fill 或 reshape -> fill -> diff 是否更快?
除此之外:这是用于使用 TensorFlow 进行机器学习的数据预处理,有没有比 numpy 更好的工具?
【问题讨论】:
标签: python arrays numpy tensorflow