[−][src]Crate ndarray
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.
 Requires Rust 1.42 or later
Crate Feature Flags
The following crate feature flags are available. They are configured in your
Cargo.toml
.
serde
 Optional, compatible with Rust stable
 Enables serialization support for serde 1.x
rayon
 Optional, compatible with Rust stable
 Enables parallel iterators, parallelized methods and
par_azip!
.
approx
 Optional, compatible with Rust stable
 Enables implementations of traits from the
approx
crate.
blas
 Optional and experimental, compatible with Rust stable
 Enable transparent BLAS support for matrix multiplication.
Uses
blassrc
for pluggable backend, which needs to be configured separately.
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
.
Modules
doc  Standalone documentation pages. 
iter  Producers, iterables and iterators. 
linalg  Linear algebra. 
parallel  Parallelization features for ndarray. 
prelude  ndarray prelude. 
Macros
array  Create an 
azip  Array zip macro: lock step function application across several arrays and producers. 
concatenate  Concatenate arrays along the given axis. 
par_azip  Parallelized array zip macro: lock step function application across several arrays and producers. 
s  Slice argument constructor. 
stack  Stack arrays along the new axis. 
stack_new_axis  Stack arrays along the new axis. 
Structs
ArrayBase  An ndimensional array. 
Axis  An axis index. 
AxisDescription  Description of the axis, its length and its stride. 
Dim  Dimension description. 
IxDynImpl  Dynamic dimension or index type. 
OwnedArcRepr  ArcArray's representation. 
OwnedRepr  Array's representation. 
RawViewRepr  Array pointer’s representation. 
Shape  A contiguous array shape of n dimensions. 
ShapeError  An error related to array shape or layout. 
Slice  A slice (range with step size). 
SliceInfo  Represents all of the necessary information to perform a slice. 
StrideShape  An array shape of n dimensions in corder, forder or custom strides. 
ViewRepr  Array view’s representation. 
Zip  Lock step function application across several arrays or other producers. 
Enums
CowRepr  CowArray's representation. 
ErrorKind  Error code for an error related to array shape or layout. 
FoldWhile  Value controlling the execution of 
SliceOrIndex  A slice (range with step) or an index. 
Traits
AsArray  Argument conversion into an array view 
AssignElem  A producer element that can be assigned to once 
Data  Array representation trait. 
DataClone  Deprecated Array representation trait. 
DataMut  Array representation trait. 
DataOwned  Array representation trait. 
DataShared  Array representation trait. 
Dimension  Array shape and index trait. 
FixedInitializer  Fixedsize array used for array initialization 
IndexLonger  Extra indexing methods for array views 
IntoDimension  Argument conversion a dimension. 
IntoNdProducer  Argument conversion into a producer. 
LinalgScalar  Elements that support linear algebra operations. 
NdFloat  Floatingpoint element types 
NdIndex  Tuple or fixed size arrays that can be used to index an array. 
NdProducer  A producer of an ndimensional set of elements; for example an array view, mutable array view or an iterator that yields chunks. 
RawData  Array representation trait. 
RawDataClone  Array representation trait. 
RawDataMut  Array representation trait. 
RawDataSubst  Array representation trait. 
RemoveAxis  Array shape with a next smaller dimension. 
ScalarOperand  Elements that can be used as direct operands in arithmetic with arrays. 
ShapeBuilder  A trait for 
Functions
Dim  Create a new dimension value. 
Ix0  Create a zerodimensional index 
Ix1  Create a onedimensional index 
Ix2  Create a twodimensional index 
Ix3  Create a threedimensional index 
Ix4  Create a fourdimensional index 
Ix5  Create a fivedimensional index 
Ix6  Create a sixdimensional index 
IxDyn  Create a dynamicdimensional index 
arr0  Create a zerodimensional array with the element 
arr1  Create a onedimensional array with elements from 
arr2  Create a twodimensional array with elements from 
arr3  Create a threedimensional array with elements from 
aview0  Create a zerodimensional array view borrowing 
aview1  Create a onedimensional array view with elements borrowing 
aview2  Create a twodimensional array view with elements borrowing 
aview_mut1  Create a onedimensional readwrite array view with elements borrowing 
aview_mut2  Create a twodimensional readwrite array view with elements borrowing 
concatenate  Concatenate arrays along the given axis. 
indices  Create an iterable of the array shape 
indices_of  Return an iterable of the indices of the passedin array. 
rcarr1  Create a onedimensional array with elements from 
rcarr2  Create a twodimensional array with elements from 
rcarr3  Create a threedimensional array with elements from 
stack  Stack arrays along the new axis. 
stack_new_axis  Stack arrays along the new axis. 
Type Definitions
ArcArray  An array where the data has shared ownership and is copy on write. 
ArcArray1  onedimensional shared ownership array 
ArcArray2  twodimensional shared ownership array 
Array  An array that owns its data uniquely. 
Array0  zerodimensional array 
Array1  onedimensional array 
Array2  twodimensional array 
Array3  threedimensional array 
Array4  fourdimensional array 
Array5  fivedimensional array 
Array6  sixdimensional array 
ArrayD  dynamicdimensional array 
ArrayView  A readonly array view. 
ArrayView0  zerodimensional array view 
ArrayView1  onedimensional array view 
ArrayView2  twodimensional array view 
ArrayView3  threedimensional array view 
ArrayView4  fourdimensional array view 
ArrayView5  fivedimensional array view 
ArrayView6  sixdimensional array view 
ArrayViewD  dynamicdimensional array view 
ArrayViewMut  A readwrite array view. 
ArrayViewMut0  zerodimensional readwrite array view 
ArrayViewMut1  onedimensional readwrite array view 
ArrayViewMut2  twodimensional readwrite array view 
ArrayViewMut3  threedimensional readwrite array view 
ArrayViewMut4  fourdimensional readwrite array view 
ArrayViewMut5  fivedimensional readwrite array view 
ArrayViewMut6  sixdimensional readwrite array view 
ArrayViewMutD  dynamicdimensional readwrite array view 
CowArray  An array with copyonwrite behavior. 
Ix  Array index type 
Ix0  zerodimensionial 
Ix1  onedimensional 
Ix2  twodimensional 
Ix3  threedimensional 
Ix4  fourdimensional 
Ix5  fivedimensional 
Ix6  sixdimensional 
IxDyn  dynamicdimensional 
Ixs  Array index type (signed) 
RawArrayView  A readonly array view without a lifetime. 
RawArrayViewMut  A mutable array view without a lifetime. 