diff --git a/.travis.yml b/.travis.yml
index 666dc16b..c71c2f1d 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -7,7 +7,7 @@ addons:
- libssl-dev
cache: cargo
rust:
- - 1.30.0
+ - 1.31.0
- stable
- beta
- nightly
diff --git a/Cargo.toml b/Cargo.toml
index d3a993c5..57795ce8 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -24,3 +24,4 @@ itertools = { version = "0.7.0", default-features = false }
[dev-dependencies]
quickcheck = "0.7"
ndarray-rand = "0.9"
+approx = "0.3"
diff --git a/src/lib.rs b/src/lib.rs
index 4a974d2d..fad9cef8 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -37,15 +37,20 @@ extern crate ndarray_rand;
#[cfg(test)]
#[macro_use(quickcheck)]
extern crate quickcheck;
+#[cfg(test)]
+#[macro_use(abs_diff_eq)]
+extern crate approx;
pub use maybe_nan::{MaybeNan, MaybeNanExt};
pub use quantile::{interpolate, QuantileExt, Quantile1dExt};
pub use sort::Sort1dExt;
pub use correlation::CorrelationExt;
pub use histogram::HistogramExt;
+pub use summary_statistics::SummaryStatisticsExt;
mod maybe_nan;
mod quantile;
mod sort;
mod correlation;
-pub mod histogram;
\ No newline at end of file
+mod summary_statistics;
+pub mod histogram;
diff --git a/src/summary_statistics/means.rs b/src/summary_statistics/means.rs
new file mode 100644
index 00000000..dd0d5337
--- /dev/null
+++ b/src/summary_statistics/means.rs
@@ -0,0 +1,97 @@
+use ndarray::{Data, Dimension, ArrayBase};
+use num_traits::{FromPrimitive, Float, Zero};
+use std::ops::{Add, Div};
+use super::SummaryStatisticsExt;
+
+
+impl SummaryStatisticsExt for ArrayBase
+where
+ S: Data,
+ D: Dimension,
+{
+ fn mean(&self) -> Option
+ where
+ A: Clone + FromPrimitive + Add