1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
use ndarray::{Array2, Array3};
pub trait Aggregate {
fn min(&self) -> f32;
fn max(&self) -> f32;
}
impl Aggregate for Array2<f32> {
fn min(&self) -> f32 {
*self
.iter()
.reduce(|current, previous| {
if current < previous {
current
} else {
previous
}
})
.unwrap()
}
fn max(&self) -> f32 {
*self
.iter()
.reduce(|current, previous| {
if current > previous {
current
} else {
previous
}
})
.unwrap()
}
}
impl Aggregate for Array3<f32> {
fn min(&self) -> f32 {
*self
.iter()
.reduce(|current, previous| {
if current < previous {
current
} else {
previous
}
})
.unwrap()
}
fn max(&self) -> f32 {
*self
.iter()
.reduce(|current, previous| {
if current > previous {
current
} else {
previous
}
})
.unwrap()
}
}