ND4j - Scientific Computing for the JVM (NDArrays)

  •        482

ND4J is an open-sourced scientific computing library for the JVM. Its features include Versatile n-dimensional array object, Multiplatform functionality including GPUs Linear algebra and signal processing functions and lot more.

http://nd4j.org/
https://github.com/deeplearning4j/nd4j

Tags
Implementation
License
Platform

   




Related Projects

NumPy - fundamental package for scientific computing with Python

  •    Python

NumPy is the fundamental package needed for scientific computing with Python. Numerical Python adds a fast and sophisticated N-dimensional array facility to the Python language. NumPy can also be used as an efficient multi-dimensional container of generic data. Arbitrary data-types can be defined. This allows NumPy to seamlessly and speedily integrate with a wide variety of databases.

TileDB - TileDB array data management

  •    C++

Array data management made fast and easy. TileDB allows you to manage the massive dense and sparse multi-dimensional array data that frequently arise in many important scientific applications.

nd4s - ND4S: N-Dimensional Arrays for Scala. Scientific Computing a la Numpy. Based on ND4J.

  •    Scala

ND4S has been migrated to a sub-module of the mono-repository here: https://github.com/deeplearning4j/deeplearning4j All future development will continue at that repository, which should be used for all issues and pull requests. ND4S is open-source Scala bindings for ND4J. Released under an Apache 2.0 license.

numjs - Like NumPy, in JavaScript

  •    Javascript

Besides its obvious scientific uses, NumJs can also be used as an efficient multi-dimensional container of generic data. NumJs is licensed under the MIT license, enabling reuse with almost no restrictions.

napari - a fast, interactive, multi-dimensional image viewer for python

  •    Python

napari is a fast, interactive, multi-dimensional image viewer for Python. It’s designed for browsing, annotating, and analyzing large multi-dimensional images. It’s built on top of Qt (for the GUI), vispy (for performant GPU-based rendering), and the scientific Python stack (numpy, scipy).


vexcl - VexCL is a C++ vector expression template library for OpenCL/CUDA

  •    C++

VexCL is a vector expression template library for OpenCL/CUDA. It has been created for ease of GPGPU development with C++. VexCL strives to reduce amount of boilerplate code needed to develop GPGPU applications. The library provides convenient and intuitive notation for vector arithmetic, reduction, sparse matrix-vector products, etc. Multi-device and even multi-platform computations are supported. The source code of the library is distributed under very permissive MIT license.

cupy - NumPy-like API accelerated with CUDA

  •    Python

CuPy is an implementation of NumPy-compatible multi-dimensional array on CUDA. CuPy consists of the core multi-dimensional array class, cupy.ndarray, and many functions on it. It supports a subset of numpy.ndarray interface. For detailed instructions on installing CuPy, see the installation guide.

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

  •    Rust

The ndarray crate provides an n-dimensional container for general elements and for numerics. The following crate feature flags are available. They are configured in your Cargo.toml.

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

  •    Rust

The ndarray crate provides an n-dimensional container for general elements and for numerics. The following crate feature flags are available. They are configured in your Cargo.toml.

xarray - N-D labeled arrays and datasets in Python

  •    Python

xarray (formerly xray) is an open source project and Python package that aims to bring the labeled data power of pandas to the physical sciences, by providing N-dimensional variants of the core pandas data structures. Our goal is to provide a pandas-like and pandas-compatible toolkit for analytics on multi-dimensional arrays, rather than the tabular data for which pandas excels. Our approach adopts the Common Data Model for self- describing scientific data in widespread use in the Earth sciences: xarray.Dataset is an in-memory representation of a netCDF file.

Object-oriented Scientific Computing Lib

  •    C++

An object-oriented library for scientific computing in C++.

resin - 32-bit vector space search engine

  •    CSharp

A full-text search engine with HTTP API and programmable read/write pipelines. To provide full-text search words and phrases are extracted from documents and mapped to a 2 billion dimensional vector-space that form clusters of syntactically similar "bag-of-chars". In this language model, each character (glyph) is encoded as a 32-bit word (an int), and each word or phrase alike encoded as a 32-bit wide (but sparse) array.

core.matrix - core.matrix : Multi-dimensional array programming API for Clojure

  •    Clojure

N-dimensional array programming API for Clojure

IGInterfaceDataTable - A category on WKInterfaceTable that makes configuring tables with multi-dimensional data easier

  •    Objective-C

IGInterfaceDataTable is a category on WKInterfaceTable that makes configuring tables with multi-dimensional data easier. Instead of flattening your data structures into an array, configure your watch tables using a data source pattern similar to UITableViewDataSource. Use IGInterfaceDataTable to build beautiful Apple Watch apps with complex data structures, just like in the Instagram Apple Watch app.

xtensor - C++ tensors with broadcasting and lazy computing

  •    C++

Multi-dimensional arrays with broadcasting and lazy computing. xtensor is a C++ library meant for numerical analysis with multi-dimensional array expressions.

Freemat - A Matlab alternative

  •    C++

FreeMat is a free environment for rapid engineering and scientific prototyping and data processing. It is similar to commercial systems such as MATLAB and IDL. It has built in arithmetic for manipulation of all supported data types, N-dimensional array manipulation, 2D and 3D plotting and image display, Visualization, Image manipulation, and as well as parallel programming.

array_column - Provides functionality for array_column() to projects using PHP earlier than version 5

  •    PHP

This simple library provides functionality for array_column() to versions of PHP earlier than 5.5. It mimics the functionality of the built-in function in every way. Given a multi-dimensional array of data, array_column() returns the values from a single column of the input array, identified by the $columnKey. Optionally, you may provide an $indexKey to index the values in the returned array by the values from the $indexKey column in the input array.

Colt - Scientific and Technical Computing in Java

  •    Java

Colt distribution consists of several free Java libraries bundled under one single uniform umbrella. Namely the Colt library, the Jet library, the CoreJava library, and the Concurrent library. It provides support for resizable arrays, dense, sparse matrices, histogramming functionality, Random Number Generators etc.

wobble - A tiny (~1

  •    TypeScript

A tiny (~1.7 KB gzipped) spring physics micro-library that models a damped harmonic oscillator. Use wobble if you need a very small and accurate damped harmonic spring simulation in your animation library or application. wobble intentionally only provides a way to animate a scalar value according to equations governing damped harmonic motion. That's all this library will ever do -- any other functionality (integration with [insert ui library here], multi-dimensional springs, a nice API around chaining springs together, etc.) is left to the reader to implement.

Vc - SIMD Vector Classes for C++

  •    C++

Recent generations of CPUs, and GPUs in particular, require data-parallel codes for full efficiency. Data parallelism requires that the same sequence of operations is applied to different input data. CPUs and GPUs can thus reduce the necessary hardware for instruction decoding and scheduling in favor of more arithmetic and logic units, which execute the same instructions synchronously. On CPU architectures this is implemented via SIMD registers and instructions. A single SIMD register can store N values and a single SIMD instruction can execute N operations on those values. On GPU architectures N threads run in perfect sync, fed by a single instruction decoder/scheduler. Each thread has local memory and a given index to calculate the offsets in memory for loads and stores. Current C++ compilers can do automatic transformation of scalar codes to SIMD instructions (auto-vectorization). However, the compiler must reconstruct an intrinsic property of the algorithm that was lost when the developer wrote a purely scalar implementation in C++. Consequently, C++ compilers cannot vectorize any given code to its most efficient data-parallel variant. Especially larger data-parallel loops, spanning over multiple functions or even translation units, will often not be transformed into efficient SIMD code.