Crate ndarray [−] [src]
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
.
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
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.18
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-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 n-dimensional array. |
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 |