Expand description
The ndarray
crate provides an ndimensional container for general elements
and for numerics.
In ndimensional we include, for example, 1dimensional rows or columns, 2dimensional 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 ndimensional 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 ndimensional 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.

MSRV: Requires Rust 1.64 or later
§Crate Feature Flags
The following crate feature flags are available. They are configured in your
Cargo.toml
. See doc::crate_feature_flags
for more information.
std
: Rust standard libraryusing functionality (enabled by default)serde
: serialization support for serde 1.xrayon
: Parallel iterators, parallelized methods, theparallel
module andpar_azip!
.approx
Implementations of traits from theapprox
crate.blas
: transparent BLAS support for matrix multiplication, needs configuration.matrixmultiplythreading
: Use threading frommatrixmultiply
.
§Documentation

The docs for
ArrayBase
provide an overview of the ndimensional 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
.
§The ndarray ecosystem
ndarray
provides a lot of functionality, but it’s not a onestop solution.
ndarray
includes matrix multiplication and other binary/unary operations out of the box.
More advanced linear algebra routines (e.g. SVD decomposition or eigenvalue computation)
can be found in ndarraylinalg
.
The same holds for statistics: ndarray
provides some basic functionalities (e.g. mean
)
but more advanced routines can be found in ndarraystats
.
If you are looking to generate random arrays instead, check out ndarrayrand
.
For conversion between ndarray
, nalgebra
and
image
check out nshare
.
Reexports§
pub use crate::slice::SliceNextDim;
pub use crate::layout::Layout;
Modules§
 Standalone documentation pages.
 Producers, iterables and iterators.
 Linear algebra.
 Parallelization features for ndarray.
 ndarray prelude.
Macros§
 Create an
Array
with one, two, three, four, five, or six dimensions.  Array zip macro: lock step function application across several arrays and producers.
 Concatenate arrays along the given axis.
 Parallelized array zip macro: lock step function application across several arrays and producers.
 Slice argument constructor.
 Stack arrays along the new axis.
Structs§
 An ndimensional array.
 An axis index.
 Description of the axis, its length and its stride.
 Dimension description.
 Dynamic dimension or index type.
 An iterator of a sequence of evenly spaced floats.
 An iterator of a sequence of logarithmically spaced number.
 A transparent wrapper of
Cell<T>
which is identical in every way, except it will implement arithmetic operators as well.  Token to represent a new axis in a slice description.
 ArcArray’s representation.
 Array’s representation.
 Array pointer’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 corder, forder or custom strides.
 Array view’s representation.
 Lock step function application across several arrays or other producers.
Enums§
 CowArray’s representation.
 Error code for an error related to array shape or layout.
 Value controlling the execution of
.fold_while
onZip
.  Array order
 A slice (range with step), an index, or a new axis token.
Traits§
 Argument conversion into an array view
 A producer element that can be assigned to once
 Array representation trait.
 Array representation trait.
 Array representation trait.
 Array representation trait.
 Adds the two dimensions at compile time.
 Array shape and index trait.
 Extra indexing methods for array views
 Argument conversion a dimension.
 Argument conversion into a producer.
 Elements that support linear algebra operations.
 Slicing information describing multiple mutable, disjoint slices.
 Floatingpoint element types
f32
andf64
.  Tuple or fixed size arrays that can be used to index an array.
 A producer of an ndimensional set of elements; for example an array view, mutable array view or an iterator that yields chunks.
 Array representation trait.
 Array representation trait.
 Array representation trait.
 Array representation trait.
 Array shape with a next smaller dimension.
 Elements that can be used as direct operands in arithmetic with arrays.
 Array shape argument with optional order parameter
 A trait for
Shape
andD where D: Dimension
that allows customizing the memory layout (strides) of an array shape.  A type that can slice an array of dimension
D
.
Functions§
 Create a new dimension value.
 Create a zerodimensional index
 Create a onedimensional index
 Create a twodimensional index
 Create a threedimensional index
 Create a fourdimensional index
 Create a fivedimensional index
 Create a sixdimensional index
 Create a dynamicdimensional index
 Create a zerodimensional array with the element
x
.  Create a onedimensional array with elements from
xs
.  Create a twodimensional array with elements from
xs
.  Create a threedimensional array with elements from
xs
.  Create a zerodimensional array view borrowing
x
.  Create a onedimensional array view with elements borrowing
xs
.  Create a twodimensional array view with elements borrowing
xs
.  Create a onedimensional readwrite array view with elements borrowing
xs
.  Create a twodimensional readwrite array view with elements borrowing
xs
.  Concatenate arrays along the given axis.
 Create an iterable of the array shape
shape
.  Return an iterable of the indices of the passedin array.
 Return an iterator of evenly spaced floats.
 An iterator of a sequence of logarithmically spaced numbers.
 Return an iterator of floats from
a
tob
(exclusive), incrementing bystep
.  Create a onedimensional array with elements from
xs
.  Create a twodimensional array with elements from
xs
.  Create a threedimensional array with elements from
xs
.  Stack arrays along the new axis.
Type Aliases§
 An array where the data has shared ownership and is copy on write.
 onedimensional shared ownership array
 twodimensional shared ownership array
 An array that owns its data uniquely.
 zerodimensional array
 onedimensional array
 twodimensional array
 threedimensional array
 fourdimensional array
 fivedimensional array
 sixdimensional array
 dynamicdimensional array
 A readonly array view.
 zerodimensional array view
 onedimensional array view
 twodimensional array view
 threedimensional array view
 fourdimensional array view
 fivedimensional array view
 sixdimensional array view
 dynamicdimensional array view
 A readwrite array view.
 zerodimensional readwrite array view
 onedimensional readwrite array view
 twodimensional readwrite array view
 threedimensional readwrite array view
 fourdimensional readwrite array view
 fivedimensional readwrite array view
 sixdimensional readwrite array view
 dynamicdimensional readwrite array view
 An array with copyonwrite behavior.
 Array index type
 zerodimensionial
 onedimensional
 twodimensional
 threedimensional
 fourdimensional
 fivedimensional
 sixdimensional
 dynamicdimensional
 Array index type (signed)
 A readonly array view without a lifetime.
 A mutable array view without a lifetime.