Struct ndarray_stats::histogram::Bins
source · pub struct Bins<A: Ord> { /* private fields */ }Expand description
Bins is a sorted collection of non-overlapping
1-dimensional intervals.
All intervals are left-inclusive and right-exclusive.
Example:
extern crate ndarray_stats;
extern crate noisy_float;
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
sourceimpl<A: Ord> Bins<A>
impl<A: Ord> Bins<A>
sourcepub fn new(edges: Edges<A>) -> Self
pub fn new(edges: Edges<A>) -> Self
Given a collection of Edges, it returns the corresponding Bins instance.
sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
Returns the number of bins.
Example:
extern crate ndarray_stats;
extern crate noisy_float;
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
);sourcepub fn index_of(&self, value: &A) -> Option<usize>
pub fn index_of(&self, value: &A) -> Option<usize>
Given value, it returns:
Some(i), if thei-th bin inselfcontainsvalue;None, ifvaluedoes not belong to any of the bins inself.
Example:
extern crate ndarray_stats;
use ndarray_stats::histogram::{Edges, Bins};
let edges = Edges::from(vec![0, 2, 4, 6]);
let bins = Bins::new(edges);
let value = 1;
assert_eq!(
bins.index_of(&1),
Some(0)
);
assert_eq!(
bins.index(bins.index_of(&1).unwrap()),
0..2
);sourcepub fn range_of(&self, value: &A) -> Option<Range<A>>where
A: Clone,
pub fn range_of(&self, value: &A) -> Option<Range<A>>where
A: Clone,
Given value, it returns:
Some(left_edge..right_edge), if there exists a bin inselfsuch thatleft_edge <= value < right_edge;None, otherwise.
Example:
extern crate ndarray_stats;
use ndarray_stats::histogram::{Edges, Bins};
let edges = Edges::from(vec![0, 2, 4, 6]);
let bins = Bins::new(edges);
assert_eq!(
bins.range_of(&1),
Some(0..2)
);
assert_eq!(
bins.range_of(&10),
None
);sourcepub fn index(&self, index: usize) -> Range<A>where
A: Clone,
pub fn index(&self, index: usize) -> Range<A>where
A: Clone,
Get the i-th bin.
Panics if index is out of bounds.
Example:
extern crate ndarray_stats;
use ndarray_stats::histogram::{Edges, Bins};
let edges = Edges::from(vec![1, 5, 10, 20]);
let bins = Bins::new(edges);
assert_eq!(
bins.index(1),
5..10
);Trait Implementations
sourceimpl<A: PartialEq + Ord> PartialEq<Bins<A>> for Bins<A>
impl<A: PartialEq + Ord> PartialEq<Bins<A>> for Bins<A>
impl<A: Eq + Ord> Eq for Bins<A>
impl<A: Ord> StructuralEq for Bins<A>
impl<A: Ord> StructuralPartialEq for Bins<A>
Auto Trait Implementations
impl<A> RefUnwindSafe for Bins<A>where
A: RefUnwindSafe,
impl<A> Send for Bins<A>where
A: Send,
impl<A> Sync for Bins<A>where
A: Sync,
impl<A> Unpin for Bins<A>where
A: Unpin,
impl<A> UnwindSafe for Bins<A>where
A: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more