2011-12-04 12 views
10

के लिए जावा समकक्ष थोड़ी देर के लिए इसका उपयोग करने के बाद, मुझे वास्तव में Numpy बहु-आयामी सरणी पसंद है। एक संक्षिप्त लेकिन पठनीय और काफी सामान्य कोड के साथ एल्गोरिदम लिखना उपयोगी है। मैं जावा में एक ही चीज़ रखना चाहता हूँ। एक गैर-आयामी एरे के साथ एक बहु-आयामी सरणी को कोड करने से पहले, क्या ऐसी कोई चीज़ पहले से ही है?नाम्पी बहु-आयामी ऑब्जेक्ट

[पी एस] मैं थोड़ा खोज की है,

+1

यदि आप जावा * प्लेटफ़ॉर्म *, [स्कलाला] (https://github.com/scalala/Scalala) का जिक्र कर रहे हैं तो एक अच्छे उम्मीदवार की तरह दिखता है ... –

उत्तर

4

तो निकटतम मैच कोल्ट लगता है! http://acs.lbl.gov/software/colt/

इसमें एक बहु-आयामी सरणी वस्तु, एक सरणी के दृश्य और आपके सामान्य रैखिक बीजगणित की विशेषताएं हैं! और यह अपेक्षाकृत कुशल लगता है।

+3

क्या आप कृपया उत्तर दे सकते हैं कि कोल्ट का कौन सा वर्ग बहुआयामी सरणी का प्रतिनिधित्व करता है? – Dims

+0

@ multidimensional arrays के लिए इंटरफ़ेस प्रदर्शित करता है सार मैट्रिक्स http://dst.lbl.gov/ACSSoftware/colt/api/cern/colt/matrix/impl/AbstractMatrix.html। कोल्ट कवर में केवल 1, 2 और 3 आयामी मामलों में प्रदान किए गए कार्यान्वयन। – dlegland

1

नहीं देखा आप रेखीय बीजगणित के लिए संख्यात्मक पुस्तकालयों का उपयोग कर सकते हैं; उन में मैट्रिक होगा। Apache Commons Math पर एक नज़र डालें।

+1

मुझे उस लाइब्रेरी से अवगत है। एपीआई एक क्लासिक 'वेक्टर और मैट्रिक्स' है। मैं एक की तरह एक बेवकूफ की तलाश में हूं, जो एक इकाई के रूप में बहु-आयामी सरणी, वैक्टर और मैट्रिस को एकीकृत करता है। व्यक्तिगत अनुभव के आधार पर ऐसा दृष्टिकोण, कई गणित कोड लिखने में आसान बनाता है। – Monkey

+0

वेक्टरोज़ (मेरा उत्तर देखें) एक इंटरफेस अबास्ट्रक्शन (INDArray) के साथ मनमाना बहु-आयामी सरणी प्रदान करता है जिसे दोनों वैक्टर और मैट्रिस द्वारा कार्यान्वित किया जाता है – mikera

0

मैं कहूंगा कि जावा में कुछ भी 'नापसंद' नहीं है। numpy एक बड़ी गणितीय उन्मुख परियोजना है जो वास्तव में जावा मानसिकता में फिट नहीं है।

यह नहीं है कि जावा में कोई अच्छी संग्रह पुस्तकालय नहीं है! गुवा के पास Table इंटरफ़ेस है जिसमें दो अच्छे कार्यान्वयन, ArrayTable और HashBasedTable हैं। यह एक संग्रह पुस्तकालय है जो एक गणितीय उपकरण है लेकिन यह बहुत उपयोगी है।

गति और स्मृति दक्षता के लिए, threre trove है। एक संग्रह पुस्तकालय जो प्राइमेटिव के साथ काम करता है।

मैटिसी संचालन के लिए, JAMA अच्छा लगता है।

जहाँ तक मुझे पता है, आपको अधिक कोड और पाइथन की तुलना में जावा में अधिक लाइब्रेरी का उपयोग करने की आवश्यकता होगी।

3

पुस्तकालय Vectorz (https://github.com/mikera/vectorz) एक पूरी तरह से विशेष रुप से प्रदर्शित NDArray कि Numpy के NDArray कार्यक्षमता में मोटे तौर पर बराबर है, यानी यह fullowing सुविधाएँ प्रदान करता है प्रदान करता है:

  • मनमानी एन आयामी सरणियों अंकीय मान के (इस मामले में, जावा युगल)
  • हल्के का उपयोग कर विचारों कुशल टुकड़ा करने की क्रिया
  • mathem की एक व्यापक श्रेणी के लिए पहुँच strided atical संचालन effiecient कार्यान्वयन

यह बहुत तेजी से भी है साथ:, यह बहुत तेजी से तो NumPy सबसे कार्यों के लिए है, हालांकि NumPy अभी भी तेजी से कुछ बड़े मैट्रिक्स आपरेशन के लिए हो सकता है, क्योंकि यह देशी BLAS पुस्तकालयों का उपयोग करता है तेजी लाने के लिए इन।

https://github.com/mikera/vectorz/blob/develop/src/main/java/mikera/arrayz/NDArray.java

अस्वीकरण:

यहाँ NDArray वर्ग ही है मैं Vectorz

के लेखक हूँ
+0

Numpy देशी BLAS समर्थन के साथ संकलित किया जा सकता है, उदा। ओपनब्लस या एटीएलएएस। वेक्टरोज कुछ अनुकूलित रैखिक बीजगणित पुस्तकालय का लाभ उठाता है? – mariolpantunes

+0

वेक्टरोज मूल पुस्तकालयों का समर्थन नहीं करता है - यह जानबूझकर शुद्ध जेवीएम कोड होने के लिए डिज़ाइन किया गया है। अन्य जावा पुस्तकालय भी हैं (उदा। एमटीजे, जेब्लास) जो बीएलएएस का उपयोग कर सकते हैं। – mikera

+0

हाय माइक। मैंने वेक्टरोज को मेरे लिए बहुत आकर्षक पाया। मैं वास्तविक समय में आरजीबी से एचएसएल में रंग प्रारूप परिवर्तन पर काम कर रहा हूं और सोचता हूं कि वेक्टरज़ जो मुझे चाहिए। क्या मैट्रिक्स में हर तत्व को कुशल तरीके से कुछ गणितीय अभिव्यक्ति लागू करना संभव है? यह मानते हुए कि एक मैट्रिक्स एकल कैमरा फ्रेम का प्रतिनिधित्व है, आइए 2 डी सरणी कहें। –

2

स्काला, numpy की तरह पुस्तकालयों की एक व्यापक संख्या है कि अगर गिना जाता है। (आपको जावा से भी उनका उपयोग करने में सक्षम होना चाहिए।)

BIDMat शक्तिशाली और तेज़ (और जीपीयू संचालित) दोनों होने का वादा करता है।

जैसा कि पहले ही उल्लेख किया है, वहाँ भी Breeze

6

ओपी तो 2015 के अंत मैं उल्लेख करना चाहते हैं जो जावा के लिए numpy होने का दावा करता शहर में एक नया बच्चा है कि वहाँ के रूप में 2011 से है ->nd4j । अच्छी बात यह है कि nd4j ब्लैस जैसे विभिन्न पुस्तकालयों के शीर्ष पर एक अमूर्त परत है। आपके matrices के आकार के आधार पर fast के रूप में दो बार अंतर्निहित कार्यान्वयन numpy या jblas के रूप में हैं। और आपका कोड वास्तविक मंच स्वतंत्र है।

1

स्पार्क के डेटाफ्रेम एपीआई का उपयोग करने का एक और शानदार विकल्प है।

http://spark.apache.org/docs/latest/sql-programming-guide.html

यह जावा में सरणियों के लिए इंटरफ़ेस की तरह आप एक पांडा/Numpy देता है। इसके अलावा कोड मूल रूप से समांतर है और यदि आपके डेटा का आकार बढ़ता है तो मशीनों के समूह पर चलाया जा सकता है।

संबंधित मुद्दे