# Crate ndarray [−] [src]

The `ndarray`

crate provides an N-dimensional container for general elements
and for numerics.

: The N-dimensional array type itself.`ArrayBase`

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
, which owns its elements.`Array`

## 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 using`ArrayView::from`

and`ArrayViewMut::from`

.

## 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.

- 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`

and`azip!()`

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
`ndarray-parallel`

crate for integration with rayon.

- Requires Rust 1.15

## 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`

- Optional, compatible with Rust stable
- Enables serialization support for serde 0.9

`blas`

- Optional and experimental, compatible with Rust stable
- Enable transparent BLAS support for matrix multiplication.
Uses
`blas-sys`

for pluggable backend, which needs to be configured separately.

## Modules

iter |
Producers, iterables and iterators. |

linalg |
Linear algebra. |

prelude |
ndarray prelude. |

## Macros

array |
Create an |

azip |
Array zip macro: lock step function application across several arrays and producers. |

s |
Slice argument constructor. |

stack |
Stack arrays along the given axis. |

## Structs

ArrayBase |
An |

Axis |
An axis index. |

AxisDescription |
Description of the axis, its length and its stride. |

Dim |
Dimension description. |

IxDynImpl |
Dynamic dimension or index type. |

OwnedRcRepr |
RcArray's representation. |

OwnedRepr |
Array's representation. |

Shape |
A contiguous array shape of n dimensions. |

ShapeError |
An error related to array shape or layout. |

Si |
A slice, a description of a range of an array axis. |

StrideShape |
An array shape of n dimensions in c-order, f-order or custom strides. |

ViewRepr |
Array view’s representation. |

Zip |
Lock step function application across several arrays or other producers. |

## Enums

ErrorKind |
Error code for an error related to array shape or layout. |

FoldWhile |
Value controlling the execution of |

## Constants

S |
Slice value for the full range of an axis. |

## Traits

AsArray |
Argument conversion into an array view |

Data |
Array representation trait. |

DataClone |
Array representation trait. |

DataMut |
Array representation trait. |

DataOwned |
Array representation trait. |

DataShared |
Array representation trait. |

Dimension |
Array shape and index trait. |

FixedInitializer |
Fixed-size array used for array initialization |

IntoDimension |
Argument conversion a dimension. |

IntoNdProducer |
Argument conversion into a producer. |

LinalgScalar |
Elements that support linear algebra operations. |

NdFloat |
Floating-point element types |

NdIndex |
Tuple or fixed size arrays that can be used to index an array. |

NdProducer |
A producer of an n-dimensional set of elements; for example an array view, mutable array view or an iterator that yields chunks. |

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 zero-dimensional index |

Ix1 |
Create a one-dimensional index |

Ix2 |
Create a two-dimensional index |

Ix3 |
Create a three-dimensional index |

Ix4 |
Create a four-dimensional index |

Ix5 |
Create a five-dimensional index |

Ix6 |
Create a six-dimensional index |

IxDyn |
Create a dynamic-dimensional index |

arr0 |
Create a zero-dimensional array with the element |

arr1 |
Create a one-dimensional array with elements from |

arr2 |
Create a two-dimensional array with elements from |

arr3 |
Create a three-dimensional array with elements from |

aview0 |
Create a zero-dimensional array view borrowing |

aview1 |
Create a one-dimensional array view with elements borrowing |

aview2 |
Create a two-dimensional array view with elements borrowing |

aview_mut1 |
Create a one-dimensional read-write array view with elements borrowing |

indices |
Create an iterable of the array shape |

indices_of |
Return an iterable of the indices of the passed-in array. |

rcarr1 |
Create a one-dimensional array with elements from |

rcarr2 |
Create a two-dimensional array with elements from |

rcarr3 |
Create a three-dimensional array with elements from |

stack |
Stack arrays along the given axis. |

## Type Definitions

Array |
An array that owns its data uniquely. |

Array0 |
zero-dimensional array |

Array1 |
one-dimensional array |

Array2 |
two-dimensional array |

Array3 |
three-dimensional array |

Array4 |
four-dimensional array |

Array5 |
five-dimensional array |

Array6 |
six-dimensional array |

ArrayD |
dynamic-dimensional array |

ArrayView |
A read-only array view. |

ArrayView0 |
zero-dimensional array view |

ArrayView1 |
one-dimensional array view |

ArrayView2 |
two-dimensional array view |

ArrayView3 |
three-dimensional array view |

ArrayView4 |
four-dimensional array view |

ArrayView5 |
five-dimensional array view |

ArrayView6 |
six-dimensional array view |

ArrayViewD |
dynamic-dimensional array view |

ArrayViewMut |
A read-write array view. |

ArrayViewMut0 |
zero-dimensional read-write array view |

ArrayViewMut1 |
one-dimensional read-write array view |

ArrayViewMut2 |
two-dimensional read-write array view |

ArrayViewMut3 |
three-dimensional read-write array view |

ArrayViewMut4 |
four-dimensional read-write array view |

ArrayViewMut5 |
five-dimensional read-write array view |

ArrayViewMut6 |
six-dimensional read-write array view |

ArrayViewMutD |
dynamic-dimensional read-write array view |

Ix |
Array index type |

Ix0 |
zero-dimensionial |

Ix1 |
one-dimensional |

Ix2 |
two-dimensional |

Ix3 |
three-dimensional |

Ix4 |
four-dimensional |

Ix5 |
five-dimensional |

Ix6 |
six-dimensional |

IxDyn |
dynamic-dimensional |

Ixs |
Array index type (signed) |

RcArray |
An array where the data has shared ownership and is copy on write. It can act as both an owner as the data as well as a shared reference (view like). |

RcArray1 |
one-dimensional shared ownership array |

RcArray2 |
two-dimensional shared ownership array |