Struct ndarray_stats::histogram::Edges
source · [−]pub struct Edges<A: Ord> { /* private fields */ }Expand description
A sorted collection of type A elements used to represent the boundaries of intervals, i.e.
Bins on a 1-dimensional axis.
Note that all intervals are left-closed and right-open. See examples below.
Examples
use ndarray_stats::histogram::{Bins, Edges};
use noisy_float::types::n64;
let unit_edges = Edges::from(vec![n64(0.), n64(1.)]);
let unit_interval = Bins::new(unit_edges);
// left-closed
assert_eq!(
unit_interval.range_of(&n64(0.)).unwrap(),
n64(0.)..n64(1.),
);
// right-open
assert_eq!(
unit_interval.range_of(&n64(1.)),
None
);Implementations
sourceimpl<A: Ord> Edges<A>
impl<A: Ord> Edges<A>
sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
Returns the number of edges in self.
Examples
use ndarray_stats::histogram::Edges;
use noisy_float::types::n64;
let edges = Edges::from(vec![n64(0.), n64(1.), n64(3.)]);
assert_eq!(
edges.len(),
3
);sourcepub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
Returns true if self contains no edges.
Examples
use ndarray_stats::histogram::Edges;
use noisy_float::types::{N64, n64};
let edges = Edges::<N64>::from(vec![]);
assert_eq!(edges.is_empty(), true);
let edges = Edges::from(vec![n64(0.), n64(2.), n64(5.)]);
assert_eq!(edges.is_empty(), false);sourcepub fn as_array_view(&self) -> ArrayView1<'_, A>
pub fn as_array_view(&self) -> ArrayView1<'_, A>
Returns an immutable 1-dimensional array view of edges.
Examples
use ndarray::array;
use ndarray_stats::histogram::Edges;
let edges = Edges::from(vec![0, 5, 3]);
assert_eq!(
edges.as_array_view(),
array![0, 3, 5].view()
);sourcepub fn indices_of(&self, value: &A) -> Option<(usize, usize)>
pub fn indices_of(&self, value: &A) -> Option<(usize, usize)>
Returns indices of two consecutive edges in self, if the interval they represent
contains the given value, or returns None otherwise.
That is to say, it returns
Some((left, right)), whereleftandrightare the indices of two consecutive edges inselfandright == left + 1, ifself[left] <= value < self[right];None, otherwise.
Examples
use ndarray_stats::histogram::Edges;
let edges = Edges::from(vec![0, 2, 3]);
// `1` is in the interval [0, 2), whose indices are (0, 1)
assert_eq!(
edges.indices_of(&1),
Some((0, 1))
);
// `5` is not in any of intervals
assert_eq!(
edges.indices_of(&5),
None
);Trait Implementations
sourceimpl<A: Ord + Clone> From<ArrayBase<OwnedRepr<A>, Dim<[usize; 1]>>> for Edges<A>
impl<A: Ord + Clone> From<ArrayBase<OwnedRepr<A>, Dim<[usize; 1]>>> for Edges<A>
sourcefn from(edges: Array1<A>) -> Self
fn from(edges: Array1<A>) -> Self
Converts an Array1<A> into an Edges<A>, consuming the 1-dimensional array.
The array will be sorted in increasing order using an unstable sorting algorithm, with
duplicates removed.
Current implementation
The current sorting algorithm is the same as std::slice::sort_unstable(),
which is based on pattern-defeating quicksort.
This sort is unstable (i.e., may reorder equal elements), in-place (i.e., does not allocate) , and O(n log n) worst-case.
Examples
use ndarray_stats::histogram::Edges;
let edges = Edges::from(vec![1, 15, 10, 20]);
// The vec gets sorted!
assert_eq!(
edges[1],
10
);sourceimpl<A: Ord> From<Vec<A, Global>> for Edges<A>
impl<A: Ord> From<Vec<A, Global>> for Edges<A>
sourcefn from(edges: Vec<A>) -> Self
fn from(edges: Vec<A>) -> Self
Converts a Vec<A> into an Edges<A>, consuming the edges.
The vector will be sorted in increasing order using an unstable sorting algorithm, with
duplicates removed.
Current implementation
The current sorting algorithm is the same as std::slice::sort_unstable(),
which is based on pattern-defeating quicksort.
This sort is unstable (i.e., may reorder equal elements), in-place (i.e., does not allocate) , and O(n log n) worst-case.
Examples
use ndarray::array;
use ndarray_stats::histogram::Edges;
let edges = Edges::from(array![1, 15, 10, 10, 20]);
// The array gets sorted!
assert_eq!(
edges[2],
15
);sourceimpl<A: Ord> Index<usize> for Edges<A>
impl<A: Ord> Index<usize> for Edges<A>
sourceimpl<A: PartialEq + Ord> PartialEq<Edges<A>> for Edges<A>
impl<A: PartialEq + Ord> PartialEq<Edges<A>> for Edges<A>
impl<A: Eq + Ord> Eq for Edges<A>
impl<A: Ord> StructuralEq for Edges<A>
impl<A: Ord> StructuralPartialEq for Edges<A>
Auto Trait Implementations
impl<A> RefUnwindSafe for Edges<A> where
A: RefUnwindSafe,
impl<A> Send for Edges<A> where
A: Send,
impl<A> Sync for Edges<A> where
A: Sync,
impl<A> Unpin for Edges<A> where
A: Unpin,
impl<A> UnwindSafe for Edges<A> where
A: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
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
sourceimpl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
sourcefn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to key and return true if they are equal.