Struct ndarray_stats::histogram::Bins [−][src]
A sorted collection of non-overlapping 1-dimensional intervals.
Note that all intervals are left-closed and right-open.
Examples
use ndarray_stats::histogram::{Edges, Bins}; use noisy_float::types::n64; let edges = Edges::from(vec![n64(0.), n64(1.), n64(2.)]); let bins = Bins::new(edges); // first bin assert_eq!( bins.index(0), n64(0.)..n64(1.) // n64(1.) is not included in the bin! ); // second bin assert_eq!( bins.index(1), n64(1.)..n64(2.) );
Implementations
impl<A: Ord> Bins<A>
[src]
#[must_use]pub fn new(edges: Edges<A>) -> Self
[src]
Returns a Bins
instance where each bin corresponds to two consecutive members of the given
Edges
, consuming the edges.
#[must_use]pub fn len(&self) -> usize
[src]
Returns the number of bins in self
.
Examples
use ndarray_stats::histogram::{Edges, Bins}; use noisy_float::types::n64; let edges = Edges::from(vec![n64(0.), n64(1.), n64(2.)]); let bins = Bins::new(edges); assert_eq!( bins.len(), 2 );
#[must_use]pub fn is_empty(&self) -> bool
[src]
Returns true
if the number of bins is zero, i.e. if the number of edges is 0 or 1.
Examples
use ndarray_stats::histogram::{Edges, Bins}; use noisy_float::types::{N64, n64}; // At least 2 edges is needed to represent 1 interval let edges = Edges::from(vec![n64(0.), n64(1.), n64(3.)]); let bins = Bins::new(edges); assert_eq!(bins.is_empty(), false); // No valid interval == Empty let edges = Edges::<N64>::from(vec![]); let bins = Bins::new(edges); assert_eq!(bins.is_empty(), true); let edges = Edges::from(vec![n64(0.)]); let bins = Bins::new(edges); assert_eq!(bins.is_empty(), true);
pub fn index_of(&self, value: &A) -> Option<usize>
[src]
Returns the index of the bin in self
that contains the given value
,
or returns None
if value
does not belong to any bins in self
.
Examples
Basic usage:
use ndarray_stats::histogram::{Edges, Bins}; let edges = Edges::from(vec![0, 2, 4, 6]); let bins = Bins::new(edges); let value = 1; // The first bin [0, 2) contains `1` assert_eq!( bins.index_of(&1), Some(0) ); // No bin contains 100 assert_eq!( bins.index_of(&100), None )
Chaining Bins::index
and Bins::index_of
to get the boundaries of the bin containing
the value:
assert_eq!( // using `Option::map` to avoid panic on index out-of-bounds bins.index_of(&1).map(|i| bins.index(i)), Some(0..2) );
pub fn range_of(&self, value: &A) -> Option<Range<A>> where
A: Clone,
[src]
A: Clone,
Returns a range as the bin which contains the given value
, or returns None
otherwise.
Examples
use ndarray_stats::histogram::{Edges, Bins}; let edges = Edges::from(vec![0, 2, 4, 6]); let bins = Bins::new(edges); // [0, 2) contains `1` assert_eq!( bins.range_of(&1), Some(0..2) ); // `10` is not in any interval assert_eq!( bins.range_of(&10), None );
#[must_use]pub fn index(&self, index: usize) -> Range<A> where
A: Clone,
[src]
A: Clone,
Trait Implementations
impl<A: Clone + Ord> Clone for Bins<A>
[src]
impl<A: Debug + Ord> Debug for Bins<A>
[src]
impl<A: Eq + Ord> Eq for Bins<A>
[src]
impl<A: PartialEq + Ord> PartialEq<Bins<A>> for Bins<A>
[src]
impl<A: Ord> StructuralEq for Bins<A>
[src]
impl<A: Ord> StructuralPartialEq for Bins<A>
[src]
Auto Trait Implementations
impl<A> RefUnwindSafe for Bins<A> where
A: RefUnwindSafe,
A: RefUnwindSafe,
impl<A> Send for Bins<A> where
A: Send,
A: Send,
impl<A> Sync for Bins<A> where
A: Sync,
A: Sync,
impl<A> Unpin for Bins<A> where
A: Unpin,
A: Unpin,
impl<A> UnwindSafe for Bins<A> where
A: UnwindSafe,
A: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<Q, K> Equivalent<K> for Q where
K: Borrow<Q> + ?Sized,
Q: Eq + ?Sized,
[src]
K: Borrow<Q> + ?Sized,
Q: Eq + ?Sized,
pub fn equivalent(&self, key: &K) -> bool
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,