iterstats 0.1.2

Statistics for rust iterators.
Documentation

iterstats

Statistics for rust iterators.

The api was inspired by itertools.

Example

// import the `Iterstats` trait & the traits belonging to whatever calculations you need
// into scope so you get access to the methods
// (alternatively just do `use iterstats::*;` to get everything)
use iterstats::{Iterstats, Mean, Variance, StdDev, ZScore};

fn main() {
    // start with your dataset
    let data = [1u8, 2, 3, 4];

    // say you want the mean (as floats, even though the data is u8)
    let float_mean = data.iter().mean::<f64>().unwrap();
    assert_eq!(float_mean, 2.5);

    // say you want the mean as a different int type
    let int_mean = data.iter().mean::<i16>().unwrap();
    assert_eq!(int_mean, 2);

    // get the variance
    let variance = data.iter().variance::<f64>().unwrap();
    assert_eq!(variance, 1.25);

    // or standard deviation
    let stddev = data.iter().stddev::<f64>().unwrap();
    assert_eq!(stddev, 1.25f64.sqrt());

    // or the zscore of each data point
    let zscores = data.iter().zscore().unwrap().collect::<Vec<f32>>();
    assert_eq!(
        zscores,
        vec![-1.3416407, -0.4472136, 0.4472136, 1.3416407]
    );
}