pub struct Bins<A: Ord> { /* private fields */ }
Expand description

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

Returns a Bins instance where each bin corresponds to two consecutive members of the given Edges, consuming the edges.

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
);

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);

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)
);

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
);

Returns a range as the bin at the given index position.

Panics

Panics if index is out of bounds.

Examples
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

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Compare self to key and return true if they are equal.

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.