Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pola-rs
GitHub Repository: pola-rs/polars
Path: blob/main/crates/polars-compute/src/rolling/no_nulls/mean.rs
8446 views
1
#![allow(unsafe_op_in_unsafe_fn)]
2
3
use super::super::mean::MeanWindow;
4
use super::*;
5
6
pub fn rolling_mean<T>(
7
values: &[T],
8
window_size: usize,
9
min_periods: usize,
10
center: bool,
11
weights: Option<&[f64]>,
12
_params: Option<RollingFnParams>,
13
) -> PolarsResult<ArrayRef>
14
where
15
T: NativeType + Float + std::iter::Sum<T> + SubAssign + AddAssign + IsFloat,
16
{
17
let offset_fn = match center {
18
true => det_offsets_center,
19
false => det_offsets,
20
};
21
match weights {
22
None => rolling_apply_agg_window::<MeanWindow<_>, _, _, _>(
23
values,
24
window_size,
25
min_periods,
26
offset_fn,
27
None,
28
),
29
Some(weights) => {
30
let wts = no_nulls::coerce_weights(weights);
31
no_nulls::rolling_apply_weights(
32
values,
33
window_size,
34
min_periods,
35
offset_fn,
36
no_nulls::compute_mean_weights,
37
&wts,
38
center,
39
)
40
},
41
}
42
}
43
44