Skip to main content

23_sum_mean/
23_sum_mean.rs

1//! Whole-tensor and axis reductions: `sum`, `mean`, `sum_axis`, `mean_axis`.
2//!
3//! Run: cargo run --example 23_sum_mean
4
5use matten::Tensor;
6
7fn main() {
8    let v = Tensor::from_vec(vec![1.0, 2.0, 3.0, 4.0, 5.0]);
9    println!("v.sum()  = {}", v.sum()); // 15.0
10    println!("v.mean() = {}", v.mean()); // 3.0
11
12    // Axis reductions on a matrix
13    // [[1,2,3],[4,5,6]]
14    let m = Tensor::new(vec![1.0, 2.0, 3.0, 4.0, 5.0, 6.0], &[2, 3]);
15    println!("column sums   (axis 0) = {:?}", m.sum_axis(0).as_slice()); // [5,7,9]
16    println!("row sums      (axis 1) = {:?}", m.sum_axis(1).as_slice()); // [6,15]
17    println!("column means  (axis 0) = {:?}", m.mean_axis(0).as_slice()); // [2.5,3.5,4.5]
18    println!("row means     (axis 1) = {:?}", m.mean_axis(1).as_slice()); // [2.0,5.0]
19
20    assert_eq!(m.sum_axis(0).as_slice(), &[5.0, 7.0, 9.0]);
21    assert_eq!(m.mean_axis(1).as_slice(), &[2.0, 5.0]);
22    println!("Assertions passed: OK");
23}