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§
Source§impl<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§
Source§impl<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>
Source§fn 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
);Source§impl<A: Ord> From<Vec<A>> for Edges<A>
impl<A: Ord> From<Vec<A>> for Edges<A>
Source§fn 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
);impl<A: Eq + Ord> Eq for Edges<A>
impl<A: Ord> StructuralPartialEq for Edges<A>
Auto Trait Implementations§
impl<A> Freeze for Edges<A>
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§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more