Java équivalent pour l'objet multi-dimensionnel Numpy
Après l'avoir utilisé pendant un certain temps, j'aime vraiment le Numpy un tableau multi-dimensionnel. Il est utile pour écrire des algorithmes avec une concise mais lisible et assez générales du code. Je voudrais avoir la même chose en Java. Avant de coder un tableau multidimensionnel avec Numpy-comme l'API de moi-même, est-il une telle chose déjà ?
[PS] j'ai cherché un peu, de ne pas la voir
source d'informationauteur Monkey
Vous devez vous connecter pour publier un commentaire.
L'OP est à partir de 2011. Afin de la fin de l'année 2015, je voudrais mentionner qu'il y a un petit nouveau en ville qui prétend être numpy pour java -> nd4j. La bonne chose est que nd4j est une couche d'abstraction sur les différentes bibliothèques comme blas. Selon la taille de votre matrices il y a des implémentations sous-jacentes deux fois rapide comme numpy ou jblas. Et votre code est réel indépendant de la plateforme.
Donc la correspondance la plus proche semble être Colt ! http://acs.lbl.gov/software/colt/
Il dispose d'un tableau multidimensionnel, objet, vue sur un tableau et de votre habitude d'algèbre linéaire ! Et il semble être plutôt efficace.
La bibliothèque Vectorz (https://github.com/mikera/vectorz) offre un complet NDArray qui est en gros, l'équivalent des fonctionnalités Numpy est NDArray, c'est à dire qu'il offre la fullowing caractéristiques:
Il est aussi très rapide: il est beaucoup plus rapide, puis NumPy pour la plupart des opérations, bien que NumPy peut-être encore plus rapide pour certaines grandes opérations matricielles car il utilise le natif BLAS bibliothèques pour accélérer ces.
Voici la NDArray classe elle-même:
https://github.com/mikera/vectorz/blob/develop/src/main/java/mikera/arrayz/NDArray.java
Avertissement: je suis l'auteur de Vectorz
Scala a un plus grand nombre de numpy-comme les bibliothèques, si ce qui compte. (Vous devriez être en mesure de les utiliser à partir de Java.)
BIDMat promet d'être à la fois puissant et rapide (et GPU-alimenté).
Comme déjà mentionné, il y a aussi Brise
Vous pouvez utiliser des bibliothèques numériques pour l'algèbre linéaire; ceux-ci devront matricies. Jetez un oeil à Apache Commons Mathématiques.
Une autre option est d'utiliser de la Spark DataFrame de l'API.
http://spark.apache.org/docs/latest/sql-programming-guide.html
Cela vous donne une Pandas/Numpy interface ressemblant à des tableaux en Java. Plus le code est par nature parallélisables et peut s'exécuter sur un cluster de machines si votre taille des données augmente.
Je dirais que java n'a rien 'comme' numpy. numpy est un grand mathématiques orientées projet, qui n'a pas vraiment d'ajustement en java mentalité.
Il ne veut pas dire qu'il n'existe aucune collection de bibliothèques en java! La goyave est le Table interface avec deux bonnes implémentations, ArrayTable et HashBasedTable. C'est plus une collection de la bibliothèque qu'un outil mathématique, mais il est très utile.
Pour la vitesse et l'efficacité de mémoire, threre est trove. Une collection de la bibliothèque qui fonctionne avec les primitives.
Pour maticies opérations, JAMA semble bonne.
Autant que je sache, vous aurez besoin de code plus et à utiliser la bibliothèque en java que python.