2个版本

0.1.1 2023年9月10日
0.1.0 2023年9月10日

#1291 in 数学

AGPL-3.0-or-later

15KB
248

目录

  1. Rust时间序列库
    1. 目录
    2. 安装
    3. 使用方法
    4. 功能
    5. 重点功能:map方法
      1. 使用Lambda函数
      2. 使用命名函数
      3. 更改类型
    6. 贡献

Rust时间序列库

Rust中的一个简单灵活的时间序列库。

目录

  • 安装
  • 使用方法
  • 功能
  • 贡献
  • 许可证

安装

要安装时间序列库,请在您的Cargo.toml中添加以下行

使用方法

导入库并开始使用它,如下所示

extern crate time_series;

use time_series::TimeSeries;
use time_series::Variation; // if you want to use the variation methods like diff and pct_change

以下是一个快速示例,演示了如何创建一个新的TimeSeries实例,添加元素,并执行map操作

let mut ts = TimeSeries::new();
ts.push(1);
ts.push(2);
ts.push(3);

let new_ts = ts.map(|&x| x * 2);
println!("{:?}", new_ts); // Should print TimeSeries([2, 4, 6])

功能

  • 基本时间序列操作方法,如pushpoplenis_emptyslice
  • 用于统计计算的变体特性,如diffpct_change
  • 通用设计允许存储任何实现Clone特性的类型。

重点功能:map方法

此时间序列库的一个关键特性是map方法。此方法允许您通过将函数f: &T -> U应用于序列中的每个元素,将TimeSeries<T>转换为TimeSeries<U>

该函数接收一个闭包或命名函数,该函数接收对数据点的不可变引用,并应返回一个新数据点,该数据点可能是不同类型的。

使用Lambda函数

以下是使用Lambda函数使用它的方法

let mut ts = TimeSeries::new();
ts.push(1);
ts.push(2);
ts.push(3);

let new_ts = ts.map(|&x| x * 2);
println!("{:?}", new_ts);  // Should print TimeSeries([2, 4, 6])

使用命名函数

您也可以使用命名函数来实现相同的转换

fn transform(x: &i32) -> i32 {
    x * 2
}

let mut ts = TimeSeries::new();
ts.push(1);
ts.push(2);
ts.push(3);

let new_ts = ts.map(transform);
println!("{:?}", new_ts);  // Should print TimeSeries([2, 4, 6])

更改类型

您甚至可以更改TimeSeries中存储的数据类型

let mut ts = TimeSeries::new();
ts.push(1);
ts.push(2);
ts.push(3);

let new_ts: TimeSeries<String> = ts.map(|&x| format!("Value: {}", x));
println!("{:?}", new_ts);  // Should print TimeSeries(["Value: 1", "Value: 2", "Value: 3"])

此功能使将时间序列数据转换为各种时间序列指数或应用任何特定用例所需的任何类型转换变得极其简单。

贡献

欢迎贡献!请fork存储库,提交包含您更改的拉取请求,或者打开一个问题以进行讨论。

依赖项

~1.5MB
~36K SLoC