Skip to main content

column_summary/
column_summary.rs

1//! Per-column summary statistics: mean, min, max, std dev.
2//!
3//! Run: cargo run --example column_summary
4
5use matten::Tensor;
6
7fn main() {
8    let data = Tensor::new(
9        vec![
10            2.0, 5.0, 10.0, 4.0, 7.0, 20.0, 6.0, 3.0, 15.0, 8.0, 11.0, 25.0, 10.0, 9.0, 30.0,
11        ],
12        &[5, 3],
13    );
14
15    let means = data.mean_axis(0);
16    let mins = data.min_axis(0);
17    let maxes = data.max_axis(0);
18    let centred = &data - &means;
19    let variances = (&centred * &centred).mean_axis(0);
20    let stds: Vec<f64> = variances.as_slice().iter().map(|v| v.sqrt()).collect();
21    let stds_t = Tensor::new(stds, &[3]);
22
23    println!("col means = {:?}", means.as_slice());
24    println!("col mins  = {:?}", mins.as_slice());
25    println!("col maxes = {:?}", maxes.as_slice());
26    println!("col stds  = {:?}", stds_t.as_slice());
27
28    assert_eq!(means.shape(), &[3]);
29    println!("Column summary: OK");
30}