ND4S alternatives and similar packages
Based on the "Science and Data Analysis" category.
Alternatively, view ND4S alternatives based on common mentions on social networks and blogs.
-
PredictionIO
machine learning server for developers and data scientists. Built on Apache Spark, HBase and Spray -
Smile
Statistical Machine Intelligence and Learning Engine. Smile is a fast and comprehensive machine learning system. -
Spark Notebook
Scalable and stable Scala and Spark focused notebook bridging the gap between JVM and Data Scientists (incl. extendable, typesafe and reactive charts). -
Figaro
Figaro is a probabilistic programming language that supports development of very rich probabilistic models. -
FACTORIE
A toolkit for deployable probabilistic modeling, implemented as a software library in Scala. -
Libra
Libra is a dimensional analysis library based on shapeless, spire and singleton-ops. It contains out of the box support for SI units for all numeric types. -
Optimus * 96
Optimus is a library for Linear and Quadratic mathematical optimization written in Scala programming language. -
Clustering4Ever
Scala and Spark API to benchmark and analyse clustering algorithms on any vectorization you can generate -
rscala
The Scala interpreter is embedded in R and callbacks to R from the embedded interpreter are supported. Conversely, the R interpreter is embedded in Scala. -
Tyche
Probability distributions, stochastic & Markov processes, lattice walks, simple random sampling. A simple yet robust Scala library. -
Rings
An efficient library for polynomial rings. Commutative algebra, polynomial GCDs, polynomial factorization and other sci things at a really high speed. -
SwiftLearner
Simply written algorithms to help study Machine Learning or write your own implementations.
Get performance insights in less than 4 minutes
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest. Visit our partner's website for more details.
Do you think we are missing an alternative of ND4S or a related project?
Popular Comparisons
README
ND4S: Scala bindings for ND4J
ND4S is open-source Scala bindings for ND4J. Released under an Apache 2.0 license.
Main Features
- NDArray manipulation syntax sugar with safer type.
- NDArray slicing syntax, similar with NumPy.
Installation
Install via Maven
ND4S is already included in official Maven repositories.
With IntelliJ, incorporation of ND4S is easy: just create a new Scala project, go to "Project Settings"/Libraries, add "From Maven...", and search for nd4s.
As an alternative, one may simply add the line below to build.sbt
and re-build project.
val nd4jVersion = "0.7.2"
libraryDependencies += "org.nd4j" % "nd4j-native-platform" % nd4jVersion
libraryDependencies += "org.nd4j" %% "nd4s" % nd4jVersion
One may want to check our maven repository page and replace 0.7.2
with the latest version.
No need for git-cloning & compiling!
Clone from the GitHub Repo
ND4S is actively developed. You can clone the repository, compile it, and reference it in your project.
Clone the repository:
$ git clone https://github.com/deeplearning4j/nd4s.git
Compile the project:
$ cd nd4s
$ sbt +publish-local
Try ND4S in REPL
The easiest way to play ND4S around is cloning this repository and run the following command.
$ cd nd4s
$ sbt test:console
It starts REPL with importing org.nd4s.Implicits._
and org.nd4j.linalg.factory.Nd4j
automatically. It uses jblas backend at default.
scala> val arr = (1 to 9).asNDArray(3,3)
arr: org.nd4j.linalg.api.ndarray.INDArray =
[[1.00,2.00,3.00]
[4.00,5.00,6.00]
[7.00,8.00,9.00]]
scala> val sub = arr(0->2,1->3)
sub: org.nd4j.linalg.api.ndarray.INDArray =
[[2.00,3.00]
[5.00,6.00]]
CheatSheet(WIP)
ND4S syntax | Equivalent NumPy syntax | Result |
---|---|---|
Array(Array(1,2,3),Array(4,5,6)).toNDArray | np.array([[1, 2 , 3], [4, 5, 6]]) | [[1.0, 2.0, 3.0] [4.0, 5.0, 6.0]] |
val arr = (1 to 9).asNDArray(3,3) | arr = np.arange(1,10).reshape(3,3) | [[1.0, 2.0, 3.0] [4.0, 5.0, 6.0] ,[7.0, 8.0, 9.0]] |
arr(0,0) | arr[0,0] | 1.0 |
arr(0,->) | arr[0,:] | [1.0, 2.0, 3.0] |
arr(--->) | arr[...] | [[1.0, 2.0, 3.0] [4.0, 5.0, 6.0] ,[7.0, 8.0, 9.0]] |
arr(0 -> 3 by 2, ->) | arr[0:3:2,:] | [[1.0, 2.0, 3.0] [7.0, 8.0, 9.0]] |
arr(0 to 2 by 2, ->) | arr[0:3:2,:] | [[1.0, 2.0, 3.0] [7.0, 8.0, 9.0]] |
arr.filter(_ > 3) | np.where(arr > 3, arr, 0) | [[0.0, 0.0, 0.0] [4.0, 5.0, 6.0] ,[7.0, 8.0, 9.0]] |
arr.map(_ % 3) | [[1.0, 2.0, 0.0] [1.0, 2.0, 0.0] ,[1.0, 2.0, 0.0]] | |
arr.filterBit(_ < 4) | [[1.0, 1.0, 1.0] [0.0, 0.0, 0.0] ,[0.0, 0.0, 0.0]] | |
arr + arr | arr + arr | [[2.0, 4.0, 6.0] [8.0, 10.0, 12.0] ,[14.0, 16.0, 18.0]] |
arr * arr | arr * arr | [[1.0, 4.0, 9.0] [16.0, 25.0, 36.0] ,[49.0, 64.0, 81.0]] |
arr dot arr | np.dot(arr, arr) | [[30.0, 36.0, 42.0] [66.0, 81.0, 96.0] ,[102.0, 126.0, 150.0]] |
arr.sumT | np.sum(arr) | 45.0 //returns Double value |
val comp = Array(1 + i, 1 + 2 * i).toNDArray | comp = np.array([1 + 1j, 1 + 2j]) | [1.0 + 1.0i ,1.0 + 2.0i] |
comp.sumT | np.sum(comp) | 2.0 + 3.0i //returns IComplexNumber value |
for(row <- arr.rowP if row.get(0) > 1) yield row*2 | [[8.00,10.00,12.00] [14.00,16.00,18.00]] | |
val tensor = (1 to 8).asNDArray(2,2,2) | tensor = np.arange(1,9).reshape(2,2,2) | [[[1.00,2.00] [3.00,4.00]] [[5.00,6.00] [7.00,8.00]]] |
for(slice <- tensor.sliceP if slice.get(0) > 1) yield slice*2 | [[[10.00,12.00][14.00,16.00]]] | |
arr(0 -> 3 by 2, ->) = 0 | [[0.00,0.00,0.00] [4.00,5.00,6.00] [0.00,0.00,0.00]] |
*Note that all licence references and agreements mentioned in the ND4S README section above
are relevant to that project's source code only.