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

标签 python numpy testing time-series resampling

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

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

重采样函数(低效)

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

关于python - 如何在python中的时间序列之间有效地映射数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56695274/

相关文章:

python - Django : DiscoverRunner overriding raise error

python - 用于文档目的的带有注释的 YAML 解析

python - 搜索大tar.gz文件中的关键字,复制并删除

Python/Numpy - 矩阵乘以一个二维数组和另一个二维数组的每一行

testing - java.lang.ClassNotFoundException : IntegrationSpec while running specs2 Tests in Intellij 14 异常

ruby-on-rails-3 - 我在哪里可以找到 Rspec + Capybara 'Getting Started' 指南?

python - 如何将 spark 数据框中的所有列值连接到 Python 中的字符串中?

python - HTML 多空格对齐

python - 将不同的 Pandas 数据框与系列对象进行比较

具有命名字段访问的 python 张量