rendarray 0.2.0-alpha.8

An N-dimensional array. NOTE: CRATE NAME CHANGED TO `ndarray`. Having package name non equal to crate name ran into many quirks of various tools. Changing the package name is easier for everyone involved! New name is `ndarray`.
rendarray-0.2.0-alpha.8 has been yanked.

The ndarray crate provides an N-dimensional container similar to numpy’s ndarray.

  • ArrayBase: The N-dimensional array type itself.
  • Array: An array where the data is shared and copy on write, it can act as both an owner of the data as well as a lightweight view.
  • OwnedArray: An array where the data is owned uniquely.
  • ArrayView, ArrayViewMut: Lightweight array views.

Highlights

  • Generic N-dimensional array
  • Slicing, also with arbitrary step size, and negative indices to mean elements from the end of the axis.
  • There is both an easy to use copy on write array (Array), or a regular uniquely owned array (OwnedArray), and both can use read-only and read-write array views.
  • Iteration and most operations are very efficient on contiguous c-order arrays (the default layout, without any transposition or discontiguous subslicing), and on arrays where the lowest dimension is contiguous.
  • Array views can be used to slice and mutate any [T] data.

Status and Lookout

  • Still iterating on the API
  • Performance status:
  • Arithmetic involving contiguous c-order arrays and contiguous lowest dimension arrays optimizes very well.
  • .fold() and .zip_mut_with() are the most efficient ways to perform single traversal and lock step traversal respectively.
  • Transposed arrays where the lowest dimension is not c-contiguous is still a pain point.
  • There is experimental bridging to the linear algebra package rblas.

Crate Feature Flags

  • assign_ops
  • Optional, requires nightly
  • Enables the compound assignment operators
  • rustc-serialize
  • Optional, stable
  • Enables serialization support
  • rblas
  • Optional, stable
  • Enables rblas integration