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