num 是go语言实现的类似numpy的工具包
num 提供了灵活的滑动窗口工具。推荐且唯一的对外调用方式为:
- Rolling(S, N) // 原始行为
- Rolling(S, N, minPeriod) // 启用 min_period
参数说明:
- S: 源序列(例如 []float64)
- N: 窗口,可以是常量(int)或切片(每个位置不同窗口),也可以直接传入支持的类型(AnyToSlice 可识别的类型)
- minPeriod: 可选参数。如果提供,则启用 min_period 语义
示例:
xs := []float64{1,2,3,4,5}
// 普通窗口
blocks := Rolling(xs, 3)
// 启用 min_period,要至少 4 个观测才计算
blocksMin := Rolling(xs, 3, 4)
// apply 版本:求移动均值
ma := RollingApply(xs, 5, func(N DType, vals ...float64) float64 {
return Sum(vals) / N
})
// 同样可以通过 Periods 直接构造(不推荐,作为实现细节)
p := AnyToPeriod(5)
p.Min = 3
blocks2 := Rolling(xs, p)兼容性说明:
- 旧的调用
Rolling(S, N)行为不变。 Periods仍保留作为实现细节,推荐使用Rolling(S,N,min)或RollingApply。
- 级别说明: 0-引用, 1-fork引入有调整, 2-参考和复制部分代码
| 级别 | 功能 | 名称 | 版本 | 地址 | 依赖 |
|---|---|---|---|---|---|
| 0 | SIMD | avo | 0.6.0 | https://github.com/mmcloughlin/avo | |
| 1 | SIMD | vek | 0.4.2 | https://github.com/viterin/vek | avo |
| 1 | plan9 | asm2plan9s | - | https://github.com/minio/asm2plan9s.git | 停止维护 |
| 1 | plan9 | c2goasm | - | https://github.com/minio/c2goasm.git | 停止维护 |
| 2 | 小众功能 | cyan | 0.4.2 | https://github.com/dablelv/cyan |
