我使用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')])
我想对临时工做增量:
timedelta64 1, temp1A - temp1B, temp 1B - temp1C, ...
并填写:
timedelta64 2 - timedelta64 1&lt; =采样率,否则用适当的时间戳填充存根:
timedelta64 1 + shift, 0, 0, 0, CONSTANT, ...
我目前:
这是非常低效的 - 到目前为止它花费了12个多小时,我预计它将需要大约100天才能完成。
什么是矢量化方法?
我认为矢量操作首先计算增量,然后我不确定如何快速批量处理并插入缺失时间戳的填充。
此外,重塑更快 - &gt; diff - &gt;填充或重塑 - &gt;填写 - &gt;差异?
除此之外:这是用于使用张量流进行机器学习的预处理数据,是否有比numpy更好的工具?
答案 0 :(得分:0)
由于我使用genfromtxt
和异类dtypes
,因此矢量化操作是通过命名列完成的:to slice columns in a tuple present in a numpy array
生成一系列numpy.datetime64:How can I make a python numpy arange of datetime
在numpy中连接大型数组很慢,最好使用预先分配的数组并使用切片填充:How to add items into a numpy array
然后,如何基于匹配datetime64合并两个结构化/记录数组并屏蔽相应的字段。可在此处找到:Compare two numpy arrays by first Column and create a third numpy array by concatenating two arrays
总体加速看起来像100天以上=&gt; &lt; 5分钟(快28,800倍)。预先分配的数组也应加快csv的加载速度。