Odpowiednik Java dla wielowymiarowego obiektu Numpy
Po dłuższym użytkowaniu bardzo podoba mi się Wielowymiarowa tablica Numpy. Pomocne jest pisanie algorytmów o zwięzłym, ale czytelnym i dość ogólnym kodzie. Chciałbym mieć to samo w Javie. Przed samym zakodowaniem wielowymiarowej tablicy z API podobnym do Numpy, czy istnieje już coś takiego ?
[PS] Szukałem trochę, nie widziałem
7 answers
OP jest z 2011 roku. Tak więc pod koniec 2015 roku chciałbym wspomnieć, że jest nowy dzieciak w mieście, który twierdzi, że jest numpy dla java - > nd4j. Fajne jest to, że nd4j jest warstwą abstrakcji na różnych bibliotekach, takich jak blas. W zależności od wielkości macierzy istnieją implementacje dwa razy większe niż fast Jak numpy lub jblas. Twój kod jest niezależny od platformy.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-23 14:25:31
Biblioteka Vectorz (https://github.com/mikera/vectorz) oferuje w pełni funkcjonalny NDArray, który jest zasadniczo równoważny pod względem funkcjonalności do Ndarray Numpy, tzn. oferuje pełne funkcje:
- dowolne tablice N-wymiarowe wartości liczbowych (w tym przypadku Java podwaja)
- lekkie widoki za pomocą strided access do efektywnego krojenia
- szeroki zakres operacji matematycznych z effiecient implementacje
Jest również bardzo szybki: jest znacznie szybszy niż NumPy dla większości operacji, chociaż NumPy może być szybszy dla niektórych dużych operacji macierzowych, ponieważ używa natywnych bibliotek BLAS do ich przyspieszenia.
Oto sama klasa NDArray:
Https://github.com/mikera/vectorz/blob/develop/src/main/java/mikera/arrayz/NDArray.java
Disclaimer: Jestem autorem Vectorz
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-18 14:55:58
Więc najbliższy mecz wydaje się być Colt ! http://acs.lbl.gov/software/colt/
Zawiera wielowymiarowy obiekt tablicy, widoki na tablicę i zwykłą algebrę liniową ! I wydaje się być raczej wydajny.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-06 21:06:58
Możesz używać bibliotek numerycznych do algebry liniowej; te będą miały w sobie Matry. Spójrz na Apache Commons Math.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-04 13:27:11
Scala ma szerszą liczbę bibliotek podobnych do numpy, jeśli to się liczy. (Powinieneś być nawet w stanie używać ich z Javy.)
BIDMat zapowiada się zarówno wydajny, jak i szybki (i zasilany przez GPU).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-13 01:24:20
Kolejną świetną opcją jest użycie Spark DataFrame API.
Http://spark.apache.org/docs/latest/sql-programming-guide.html
Daje to interfejs Typu Pandy / Numpy do tablic w Javie. Dodatkowo kod jest z natury równoległy i może być uruchamiany na klastrze maszyn, jeśli rozmiar danych wzrośnie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-26 22:54:35
Powiedziałbym, że java nie ma nic takiego jak numpy. numpy jest dużym matematycznie zorientowanym projektem, który tak naprawdę nie pasuje do mentalności Javy.
To nie znaczy, że nie ma dobrych bibliotek kolekcji w Javie! Guava posiada interfejs Table z dwoma dobrymi implementacjami, ArrayTable i HashBasedTable . To bardziej biblioteka kolekcji niż narzędzie matematyczne, ale jest bardzo przydatna.
Dla szybkości i wydajności pamięci, there is trove . Biblioteka kolekcji pracująca z prymitywami.
W przypadku operacji maticies, JAMA wydaje się być dobra.
Z tego co wiem, będziesz musiał więcej kodować i używać więcej bibliotek w Javie niż python.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-06 16:21:20