Expand description
The ndarray
crate provides an n-dimensional container for general elements
and for numerics.
In n-dimensional we include for example 1-dimensional rows or columns, 2-dimensional matrices, and higher dimensional arrays. If the array has n dimensions, then an element in the array is accessed by using that many indices. Each dimension is also called an axis.
ArrayBase
: The n-dimensional array type itself.
It is used to implement both the owned arrays and the views; see its docs for an overview of all array features.- The main specific array type is
Array
, which owns its elements.
Highlights
- Generic n-dimensional array
- Slicing, also with arbitrary step size, and negative indices to mean elements from the end of the axis.
- Views and subviews of arrays; iterators that yield subviews.
- Higher order operations and arithmetic are performant
- Array views can be used to slice and mutate any
[T]
data usingArrayView::from
andArrayViewMut::from
. Zip
for lock step function application across two or more arrays or other item producers (NdProducer
trait).
Crate Status
- Still iterating on and evolving the crate
- The crate is continuously developing, and breaking changes are expected during evolution from version to version. We adopt the newest stable rust features if we need them.
- Note that functions/methods/traits/etc. hidden from the docs are not considered part of the public API, so changes to them are not considered breaking changes.
- Performance:
- Prefer higher order methods and arithmetic operations on arrays first, then iteration, and as a last priority using indexed algorithms.
- The higher order functions like
.map()
,.map_inplace()
,.zip_mut_with()
,Zip
andazip!()
are the most efficient ways to perform single traversal and lock step traversal respectively. - Performance of an operation depends on the memory layout of the array or array view. Especially if it’s a binary operation, which needs matching memory layout to be efficient (with some exceptions).
- Efficient floating point matrix multiplication even for very large matrices; can optionally use BLAS to improve it further.
- See also the
ndarray-parallel
crate for integration with rayon.
- Requires Rust 1.27
Crate Feature Flags
The following crate feature flags are available. They are configured in your
Cargo.toml
.
rustc-serialize
- Optional, compatible with Rust stable
- Enables serialization support for rustc-serialize 0.3
serde-1
- Optional, compatible with Rust stable
- Enables serialization support for serde 1.0
blas
- Optional and experimental, compatible with Rust stable
- Enable transparent BLAS support for matrix multiplication.
Uses
blas-src
for pluggable backend, which needs to be configured separately.
Documentation
-
The docs for
ArrayBase
provide an overview of the n-dimensional array type. Other good pages to look at are the documentation for thes![]
andazip!()
macros. -
If you have experience with NumPy, you may also be interested in
ndarray_for_numpy_users
.
Re-exports
pub use self::OwnedArcRepr as OwnedRcRepr;
Modules
Standalone documentation pages.
Producers, iterables and iterators.
Linear algebra.
ndarray prelude.
Macros
Array zip macro: lock step function application across several arrays and
producers.
Slice argument constructor.
Stack arrays along the given axis.
Structs
An n-dimensional array.
An axis index.
Description of the axis, its length and its stride.
Dimension description.
Dynamic dimension or index type.
ArcArray’s representation.
Array’s representation.
A contiguous array shape of n dimensions.
An error related to array shape or layout.
A slice (range with step size).
Represents all of the necessary information to perform a slice.
An array shape of n dimensions in c-order, f-order or custom strides.
Array view’s representation.
Lock step function application across several arrays or other producers.
Enums
Error code for an error related to array shape or layout.
Value controlling the execution of
.fold_while
on Zip
.A slice (range with step) or an index.
Traits
Argument conversion into an array view
Array representation trait.
Array representation trait.
Array representation trait.
Array representation trait.
Array representation trait.
Array shape and index trait.
Fixed-size array used for array initialization
Extra indexing methods for array views
Argument conversion a dimension.
Argument conversion into a producer.
Elements that support linear algebra operations.
Floating-point element types
f32
and f64
.Tuple or fixed size arrays that can be used to index an array.
A producer of an n-dimensional set of elements;
for example an array view, mutable array view or an iterator
that yields chunks.
Array shape with a next smaller dimension.
Elements that can be used as direct operands in arithmetic with arrays.
A trait for
Shape
and D where D: Dimension
that allows
customizing the memory layout (strides) of an array shape.Functions
Create a new dimension value.
Create a zero-dimensional index
Create a one-dimensional index
Create a two-dimensional index
Create a three-dimensional index
Create a four-dimensional index
Create a five-dimensional index
Create a six-dimensional index
Create a dynamic-dimensional index
Create a zero-dimensional array with the element
x
.Create a one-dimensional array with elements from
xs
.Create a two-dimensional array with elements from
xs
.Create a three-dimensional array with elements from
xs
.Create a zero-dimensional array view borrowing
x
.Create a one-dimensional array view with elements borrowing
xs
.Create a two-dimensional array view with elements borrowing
xs
.Create a one-dimensional read-write array view with elements borrowing
xs
.Create a two-dimensional read-write array view with elements borrowing
xs
.Create an iterable of the array shape
shape
.Return an iterable of the indices of the passed-in array.
Create a one-dimensional array with elements from
xs
.Create a two-dimensional array with elements from
xs
.Create a three-dimensional array with elements from
xs
.Stack arrays along the given axis.
Type Definitions
An array where the data has shared ownership and is copy on write.
An array that owns its data uniquely.
zero-dimensional array
one-dimensional array
two-dimensional array
three-dimensional array
four-dimensional array
five-dimensional array
six-dimensional array
dynamic-dimensional array
A read-only array view.
zero-dimensional array view
one-dimensional array view
two-dimensional array view
three-dimensional array view
four-dimensional array view
five-dimensional array view
six-dimensional array view
dynamic-dimensional array view
A read-write array view.
zero-dimensional read-write array view
one-dimensional read-write array view
two-dimensional read-write array view
three-dimensional read-write array view
four-dimensional read-write array view
five-dimensional read-write array view
six-dimensional read-write array view
dynamic-dimensional read-write array view
Array index type
zero-dimensionial
one-dimensional
two-dimensional
three-dimensional
four-dimensional
five-dimensional
six-dimensional
dynamic-dimensional
Array index type (signed)
An array where the data has shared ownership and is copy on write.
one-dimensional shared ownership array
two-dimensional shared ownership array