All Projects → rust-ndarray → Ndarray

rust-ndarray / Ndarray

Licence: other
ndarray: an N-dimensional array with array views, multidimensional slicing, and efficient operations

Programming Languages

rust
11053 projects
shell
77523 projects

Projects that are alternatives of or similar to Ndarray

Jigsaw
JIGSAW is a Delaunay-based unstructured mesh generator for two- and three-dimensional geometries.
Stars: ✭ 83 (-95.86%)
Mutual labels:  scientific-computing
Openmole
Workflow engine for exploration of simulation models using high throughput computing
Stars: ✭ 120 (-94.02%)
Mutual labels:  scientific-computing
Numcpp
C++ implementation of the Python Numpy library
Stars: ✭ 2,031 (+1.25%)
Mutual labels:  scientific-computing
Boinc
Open-source software for volunteer computing and grid computing.
Stars: ✭ 1,320 (-34.2%)
Mutual labels:  scientific-computing
Adcme.jl
Automatic Differentiation Library for Computational and Mathematical Engineering
Stars: ✭ 106 (-94.72%)
Mutual labels:  scientific-computing
Gosl
Linear algebra, eigenvalues, FFT, Bessel, elliptic, orthogonal polys, geometry, NURBS, numerical quadrature, 3D transfinite interpolation, random numbers, Mersenne twister, probability distributions, optimisation, differential equations.
Stars: ✭ 1,629 (-18.79%)
Mutual labels:  scientific-computing
Scidart
Multiplatform scientific computing for Dart
Stars: ✭ 73 (-96.36%)
Mutual labels:  scientific-computing
Espresso
The ESPResSo package
Stars: ✭ 130 (-93.52%)
Mutual labels:  scientific-computing
Freud
Powerful, efficient particle trajectory analysis in scientific Python.
Stars: ✭ 118 (-94.12%)
Mutual labels:  scientific-computing
Gonum
开源Go语言数值算法库(An open numerical library purely based on Go programming language)
Stars: ✭ 128 (-93.62%)
Mutual labels:  scientific-computing
Regionmask
plotting and creation of masks of spatial regions
Stars: ✭ 97 (-95.16%)
Mutual labels:  scientific-computing
Partia Computing Michaelmas
Activities and exercises for the Part IA computing course in Michaelmas Term
Stars: ✭ 104 (-94.82%)
Mutual labels:  scientific-computing
Plip
Protein-Ligand Interaction Profiler - Analyze and visualize non-covalent protein-ligand interactions in PDB files according to 📝 Salentin et al. (2015), https://www.doi.org/10.1093/nar/gkv315
Stars: ✭ 123 (-93.87%)
Mutual labels:  scientific-computing
Cytoflow
A Python toolbox for quantitative, reproducible flow cytometry analysis
Stars: ✭ 90 (-95.51%)
Mutual labels:  scientific-computing
Indicators.jl
Financial market technical analysis & indicators in Julia
Stars: ✭ 130 (-93.52%)
Mutual labels:  scientific-computing
Pylbm
Numerical simulations using flexible Lattice Boltzmann solvers
Stars: ✭ 83 (-95.86%)
Mutual labels:  scientific-computing
Pybinding
Scientific Python package for tight-binding calculations in solid state physics
Stars: ✭ 123 (-93.87%)
Mutual labels:  scientific-computing
Hedgehog Lab
Run, compile and execute JavaScript for Scientific Computing and Data Visualization TOTALLY TOTALLY TOTALLY in your BROWSER! An open source scientific computing environment for JavaScript TOTALLY in your browser, matrix operations with GPU acceleration, TeX support, data visualization and symbolic computation.
Stars: ✭ 1,797 (-10.42%)
Mutual labels:  scientific-computing
Harold
An open-source systems and controls toolbox for Python3
Stars: ✭ 130 (-93.52%)
Mutual labels:  scientific-computing
Awesome Scientific Python
A curated list of awesome scientific Python resources
Stars: ✭ 127 (-93.67%)
Mutual labels:  scientific-computing

ndarray

The ndarray crate provides an n-dimensional container for general elements and for numerics.

Please read the API documentation on docs.rs or take a look at the quickstart tutorial.

CI build status ndarray at crates.io Matrix chat at #rust-sci:matrix.org IRC at #rust-sci on OFTC

Highlights

  • Generic 1, 2, ..., n-dimensional arrays
  • Owned arrays and array views
  • 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.

Status and Lookout

  • 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.
    • Efficient floating point matrix multiplication even for very large matrices; can optionally use BLAS to improve it further.

Crate Feature Flags

The following crate feature flags are available. They are configured in your Cargo.toml.

  • std

    • Rust standard library (enabled by default)

    • This crate can be used without the standard library by disabling the default std feature. To do so, use this in your Cargo.toml:

      [dependencies] ndarray = { version = "0.x.y", default-features = false }

    • The geomspace linspace logspace range std var var_axis and std_axis methods are only available when std is enabled.

  • serde

    • Enables serialization support for serde 1.x
  • rayon

    • Enables parallel iterators, parallelized methods and par_azip!.
    • Implies std
  • blas

    • Enable transparent BLAS support for matrix multiplication. Uses blas-src for pluggable backend, which needs to be configured separately (see below).
  • matrixmultiply-threading

    • Enable the threading feature in the matrixmultiply package

How to use with cargo

[dependencies]
ndarray = "0.15.0"

How to enable blas integration

Blas integration is an optional add-on. Without BLAS, ndarray uses the matrixmultiply crate for matrix multiplication for f64 and f32 arrays (and it's always enabled as a fallback since it supports matrices of arbitrary strides in both dimensions).

Depend and link to blas-src directly to pick a blas provider. Ndarray presently requires a blas provider that provides the cblas-sys interface. If further feature selection is wanted or needed then you might need to depend directly on the backend crate's source too. The backend version must be the one that blas-src also depends on.

An example configuration using system openblas is shown below. Note that only end-user projects (not libraries) should select provider:

[dependencies]
ndarray = { version = "0.15.0", features = ["blas"] }
blas-src = { version = "0.8", features = ["openblas"] }
openblas-src = { version = "0.10", features = ["cblas", "system"] }

Using system-installed dependencies can save a long time building dependencies. An example configuration using (compiled) netlib is shown below anyway:

[dependencies]
ndarray = { version = "0.15.0", features = ["blas"] }
blas-src = { version = "0.8.0", default-features = false, features = ["netlib"] }

When this is done, your program must also link to blas_src by using it or explicitly including it in your code:

extern crate blas_src;

The following versions have been verified to work together. For ndarray 0.15 or later, there is no tight coupling to the blas-src version, so version selection is more flexible.

ndarray blas-src openblas-src netlib-src
0.15 0.8 0.10 0.8
0.15 0.7 0.9 0.8
0.14 0.6.1 0.9.0  
0.13 0.2.0 0.6.0  

Recent Changes

See RELEASES.md.

License

Dual-licensed to be compatible with the Rust project.

Licensed under the Apache License, Version 2.0 http://www.apache.org/licenses/LICENSE-2.0 or the MIT license http://opensource.org/licenses/MIT, at your option. This file may not be copied, modified, or distributed except according to those terms.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].