#scientific-computing #numpy #array #n-dimensional

ndim

N-dimensional array for numerals in Rust similar to NumPy

3 releases

0.1.2 Jul 26, 2024
0.1.1 Jul 26, 2024
0.1.0 Jul 26, 2024

#446 in Data structures

Download history 293/week @ 2024-07-26 13/week @ 2024-08-02 36/week @ 2024-09-13 27/week @ 2024-09-20 7/week @ 2024-09-27 1/week @ 2024-10-04

71 downloads per month

MIT license

5MB
391 lines

NDim - Rust-based N-Dimensional Array Library

License: MIT crates.io Documentation Build Status

Overview

NDim is an open-source Rust library for n-dimensional array storage, similar to NumPy in Python and ndarray in Rust. It aims to assist in scientific computation by providing efficient and flexible n-dimensional array data structures and operations. The library is designed to be performant and easy to use, making it an excellent choice for high-performance computing tasks in Rust.

Note: This project is still under development, and contributions are welcome!

Features

  • N-Dimensional Array Storage: Efficient storage and manipulation of n-dimensional arrays.
  • Generic Data Types: Supports various numeric types, including integers and floating-point numbers.
  • Basic Array Operations: Provides basic operations such as array creation, indexing, and element-wise operations.

Upcoming Features

  • Fancy printing: - Print the n-dimensional array conforming to its shape.
  • Axes mutation: - Change values of the n-dimensional array in an axis and much more with axes.
  • Mapping and other looping support: Loop over the n-dimensional array by using (viz.) map, reduce, filter, etc. methods.
  • BLAS Support: Integration with Basic Linear Algebra Subprograms (BLAS) for advanced linear algebra operations.

Installation

Add the following to your Cargo.toml:

[dependencies]
ndim = { git = "https://github.com/noobsiecoder/ndim.git" }

Usage

Here's a simple example of how to use NDim:

use ndim::core::NdArray;

fn main() {
    // Create an NdArray filled with a specific value
    let shape = [3, 2];
    let array = NdArray::<i32, 2>::zeros(shape);

    // Print the array
    for i in 0..array.shape()[0] {
        for j in 0..array.shape()[1] {
            println!("{}", array[[i, j]]); // access the value from memory
        }
    }
}

Documentation

Detailed documentation is available on docs.rs.

Contributing

Contributions from the community are welcomed! If you would like to contribute, please follow these steps:

  1. Fork the repository.
  2. Create a new branch for your feature or bugfix.
  3. Make your changes and commit them with descriptive messages.
  4. Push your branch to your forked repository.
  5. Create a pull request to the main repository.

Please ensure that your code adheres to the project's coding standards and includes appropriate tests.

License

This project is licensed under the MIT License. See the LICENSE file for details.

Contact

For questions, issues, or suggestions, please open an issue on GitHub or contact the project maintainers.


Thank you for using NDim! I hope it helps you in your scientific computing endeavors.

Dependencies