如何在python中的时间序列之间有效地映射数据

杰西·雷扎·霍拉萨尼

我正在尝试创建一个有效的功能来重新采样时间序列数据。

假设:两组时间序列数据都具有相同的开始和结束时间。(我在另一个步骤中执行此操作。)

重采样功能(效率低下)

import numpy as np

def resample(desired_time_sequence, data_sequence):
    downsampling_indices = np.linspace(0, len(data_sequence)-1, len(desired_time_sequence)).round().astype(int)
    downsampled_array = [data_sequence[ind] for ind in downsampling_indices] 
    return  downsampled_array

速度测试

import timeit
def test_speed(): resample([1,2,3], [.5,1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6])
print(timeit.timeit(test_speed, number=100000))
# 1.5003695999998854 

有兴趣听到任何建议。

阿迪

更换

downsampled_array = [data_sequence[ind] for ind in downsampling_indices]

downsampled_array = data_sequence[downsampling_indices]

在我的测试数据上提供了7倍的加速。

用于测量加速的代码:

import timeit

f1 = """
def resample(output_len, data_sequence):
    downsampling_indices = np.linspace(0, len(data_sequence)-1, output_len).round().astype(int)
    downsampled_array = [data_sequence[ind] for ind in downsampling_indices]
    return downsampled_array

resample(output_len, data_sequence)
"""

f2 = """
def resample_fast(output_len, data_sequence):
    downsampling_indices = np.linspace(0, len(data_sequence)-1, output_len).round().astype(int)
    downsampled_array = data_sequence[downsampling_indices]
    return downsampled_array

resample_fast(output_len, data_sequence)
"""


setup="""
import numpy as np
data_sequence = np.random.randn(10000)
output_len = 752
"""

print(timeit.timeit(f1, setup, number=1000))
print(timeit.timeit(f2, setup, number=1000))

# prints:
# 0.30194038699846715
# 0.041797632933594286

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何有效地填充时间序列?

如何有效地将数据框中的条目映射到字典

如何在Python中有效地将字符串类型的数据框列转换为日期时间?

如何使用dask有效地并行化时间序列预测?

如何在Python中有效地计算多个文档中的双字母组

如何在REST序列化程序中有效地访问数据库以获取相关字段?

如何有效地订购时间python

如何有效地计算不同长度(na内部)序列之间的成对距离?

如何在python中有效地找到两个字典之间的所有差异

如何在Python中有效地在多个线程和进程之间共享数据?

如何在python中有效地将字典中的值分组

如何在python 3中有效地将原始字节写入numpy数组数据

如何使用Python中的Pandas有效地将数据帧重组为日期时间项?

如何有效地计算多个时间序列的欧几里得距离矩阵

如何使用python中的列表有效地排序列表列表

根据将来的时间序列数据有效地为时间序列数据生成标签

如何有效地创建从数据帧开始到每个索引的序列?

有效地找到R中的起始和终止向量之间的序列

如何在Python 2.7中使用多个键有效地解析JSON数据?

如何在python中更有效地搜索大型列表?

如何在Python中有效地将参数解译到数据库

如何在数据库更新后有效地从数据库中获取数据?

如何在C ++ 11中有效地返回大数据

如何在 Python 中有效地搜索和访问数据帧中的某些单元格?

如何在 Django Reversions 中的给定时间有效地检索属性的值?

如何有效地聚合 tex 数据 - python

如何在 Python 中更有效地阅读?

如何有效地将数据帧对象解析为键值对映射

如何在python pandas中的两个数据帧之间有效地搜索?