rust-ndarray / ndarray-stats

Statistical routines for ndarray
https://docs.rs/ndarray-stats
Apache License 2.0
187 stars 24 forks source link

(min/max)_axis(_skipnan) #68

Open sebasv opened 3 years ago

sebasv commented 3 years ago

A common use case for me is taking the min or max over one axis of a multidimensional array, much like quantile_axis_mut, except I don't want to mutate my original data and I don't need the overhead of tracking quantiles. I couldn't find mentions of this idea in other issues. Will you consider a PR for such methods? I was thinking along the lines of

pub trait QuantileExt<A, S, D>
where
    S: Data<Elem = A>,
    D: Dimension,
{
    fn min_axis_skipnan(
        &self,
        axis: Axis,
    ) -> Array<A, D::Smaller>
    where
        D: RemoveAxis,
        A: Ord + Clone + MaybeNan,
        A::NotNan: Ord;
}
jtrawinski commented 3 years ago

I would also find this useful. I'm currently using something like:

data.map_axis(Axis(0), |col| col.min_skipnan().clone())
LukeMathWalker commented 3 years ago

Given that the skipnan functionality is not available in ndarray itself I'd say that this would be a good addition for convenience :+1: