NdArray

सार्वजनिक इंटरफ़ेस NdArray
ज्ञात अप्रत्यक्ष उपवर्ग

एन-आयामों की एक डेटा संरचना।

'एनडीएरे' इंटरफ़ेस डेटा रिकॉर्ड के भौतिक भंडारण, जो रैखिक या खंडित हो सकता है, और इसके तार्किक प्रतिनिधित्व के बीच एक अमूर्तता बनाता है। सामान्य तौर पर, वे मेमोरी में सीधे रैखिक डेटा खंडों को मैप करके जावा में मानक बहु-आयामी सरणियों की तुलना में बेहतर प्रदर्शन प्राप्त करते हैं।

DataBuffer की तरह, NdArray इंस्टेंसेस 64-बिट इंडेक्सिंग का समर्थन करते हैं ताकि उनका उपयोग बहुत बड़े डेटा रिकॉर्ड को मैप करने के लिए किया जा सके। वे विशेष निर्देशांकों का भी समर्थन करते हैं जो उनके मूल्यों को किसी भी दिशा में पार करने या उनमें से केवल एक उपसमूह का चयन करने की अनुमति देते हैं।

उपयोग का उदाहरण:

// Creates a 2x3x2 matrix (of rank 3)
    FloatNdArray matrix3d = NdArrays.ofFloats(shape(2, 3, 2));

    // Initialize sub-matrices data with vectors
    matrix.set(NdArrays.vectorOf(1.0f, 2.0f), 0, 0)
          .set(NdArrays.vectorOf(3.0f, 4.0f), 0, 1)
          .set(NdArrays.vectorOf(5.0f, 6.0f), 0, 2)
          .set(NdArrays.vectorOf(7.0f, 8.0f), 1, 0)
          .set(NdArrays.vectorOf(9.0f, 10.0f), 1, 1)
          .set(NdArrays.vectorOf(11.0f, 12.0f), 1, 2);

    // Access the second 3x2 matrix (of rank 2)
    FloatNdArray matrix = matrix3d.get(1);

    // Access directly the float value at (1, 0) from the second matrix
    assertEquals(9.0f, matrix.getFloat(1, 0));
 

सार्वजनिक तरीके

सार एनडीअरे <टी>
कॉपीटू ( एनडीएरे <टी> डीएसटी)
इस सरणी की सामग्री को गंतव्य सरणी में कॉपी करें।
सार NdArraySequence <? NdArray <T>> का विस्तार करता है
तत्व (पूर्णांक आयामआईडीएक्स)
किसी दिए गए आयाम पर सभी तत्वों का अनुक्रम लौटाता है।
अमूर्त बूलियन
बराबर (वस्तु obj)
एन-आयामी सरणियों के बीच समानता की जाँच करता है।
सार एनडीअरे <टी>
प्राप्त करें (लंबा...निर्देशांक)
दिए गए निर्देशांक पर इस सरणी का एन-आयामी तत्व लौटाता है।
सार टी
getObject (लंबा...निर्देशांक)
दिए गए निर्देशांक पर पाए गए अदिश मान को लौटाता है।
सार एनडीअरे <टी>
पढ़ें ( डेटाबफर <टी> डीएसटी)
इस एन-आयामी सरणी की सामग्री को गंतव्य बफर में पढ़ें।
सार NdArraySequence <? NdArray <T>> का विस्तार करता है
अदिश ()
इस सरणी में सभी अदिशों का अनुक्रम लौटाता है।
सार एनडीअरे <टी>
सेट ( NdArray <T> src, long...निर्देशांक)
दिए गए निर्देशांक पर पाए गए एन-आयामी तत्व का मान निर्दिष्ट करता है।
सार एनडीअरे <टी>
सेटऑब्जेक्ट (टी मान, लंबा... निर्देशांक)
दिए गए निर्देशांक पर पाए गए अदिश मान को निर्दिष्ट करता है।
सार एनडीअरे <टी>
स्लाइस ( सूचकांक... सूचकांक)
दिए गए सूचकांक चयनकर्ताओं के लिए एक या अधिक आयामों को मैप करके इस सरणी का एक बहु-आयामी दृश्य (या स्लाइस) बनाता है।
सार एनडीअरे <टी>
लिखें ( डेटाबफ़र <टी> स्रोत)
स्रोत बफ़र से इस एन-आयामी सरणी की सामग्री लिखें।

विरासत में मिले तरीके

सार्वजनिक तरीके

सार्वजनिक सार NdArray <T> CopyTo ( NdArray <T> dst)

इस सरणी की सामग्री को गंतव्य सरणी में कॉपी करें।

गंतव्य सरणी का shape() इस सरणी के आकार के बराबर होना चाहिए, या एक अपवाद फेंक दिया जाएगा। प्रतिलिपि के बाद, दोनों सरणियों की सामग्री को एक-दूसरे को प्रभावित किए बिना, स्वतंत्र रूप से बदला जा सकता है।

पैरामीटर
डीएसटी इस सारणी की सामग्री की एक प्रति प्राप्त करने के लिए सारणी
रिटर्न
  • यह सरणी
फेंकता
IllegalArgumentException यदि dst का आकार इस सरणी के आकार के बराबर नहीं है

सार्वजनिक सार NdArraySequence <? NdArray <T>> तत्वों का विस्तार करता है (int आयामIdx)

किसी दिए गए आयाम पर सभी तत्वों का अनुक्रम लौटाता है।

तार्किक रूप से, एन-आयामी सरणी को एक ही वेक्टर में समतल किया जा सकता है, जहां कुल size() मानों के लिए (n - 1) वें तत्व के स्केलर (n) वें तत्व से पहले होते हैं।

उदाहरण के लिए, [x, y] अक्षों पर एक nxm मैट्रिक्स दिए जाने पर, तत्वों को निम्नलिखित क्रम में पुनरावृत्त किया जाता है:

x 0 y 0 , x 0 y 1 , ..., x 0 y m-1 , x 1 y 0 , x 1 y 1 , ..., x n-1 y m-1

लौटाए गए अनुक्रम को forEach(Consumer) या forEachIndexed(BiConsumer) पर कॉल करके प्रत्येक तत्व पर जाने के लिए पुनरावृत्त किया जा सकता है।

// Iterate matrix for initializing each of its vectors
    matrixOfFloats.elements(0).forEach(v -> {
      v.set(vector(1.0f, 2.0f, 3.0f));
    );

    // Iterate a vector for reading each of its scalar
    vectorOfFloats.scalars().forEachIdx((coords, s) -> {
      System.out.println("Value " + s.getFloat() + " found at " + coords);
    });
 }

पैरामीटर
आयामIdx आयाम का सूचकांक
रिटर्न
  • एक NdArray अनुक्रम
फेंकता
IllegalArgumentException यदि dimensionIdx इस सरणी के आयामों की कुल संख्या से अधिक या उसके बराबर है

सार्वजनिक सार बूलियन बराबर (ऑब्जेक्ट ओब्जेक्ट)

एन-आयामी सरणियों के बीच समानता की जाँच करता है।

एक सरणी किसी अन्य ऑब्जेक्ट के बराबर होती है यदि यह ऑब्जेक्ट समान आकार, प्रकार का एक और NdArray है और तत्व समान और समान क्रम में हैं। उदाहरण के लिए:

IntNdArray array = NdArrays.ofInts(Shape.of(2, 2))
    .set(NdArrays.vectorOf(1, 2), 0)
    .set(NdArrays.vectorOf(3, 4), 1);

 assertEquals(array, StdArrays.ndCopyOf(new int[][] { {1, 2, {3, 4} }));  // true
 assertEquals(array, StdArrays.ndCopyOf(new Integer[][] { {1, 2}, {3, 4} }));  // true, as Integers are equal to ints
 assertNotEquals(array, NdArrays.vectorOf(1, 2, 3, 4));  // false, different shapes
 assertNotEquals(array, StdArrays.ndCopyOf(new int[][] { {3, 4}, {1, 2} }));  // false, different order
 assertNotEquals(array, StdArrays.ndCopyOf(new long[][] { {1L, 2L}, {3L, 4L} }));  // false, different types
 }

ध्यान दें कि दो सरणियों के बीच समानता को सत्यापित करने के लिए आवश्यक गणना कुछ मामलों में महंगी हो सकती है और इसलिए, इस पद्धति का उपयोग महत्वपूर्ण पथ में नहीं करने की अनुशंसा की जाती है जहां प्रदर्शन मायने रखता है।

पैरामीटर
ओबीजे इस सरणी की तुलना करने के लिए ऑब्जेक्ट
रिटर्न
  • यदि यह सरणी प्रदत्त ऑब्जेक्ट के बराबर है तो सत्य है

सार्वजनिक सार NdArray <T> प्राप्त करें (लंबे... निर्देशांक)

दिए गए निर्देशांक पर इस सरणी का एन-आयामी तत्व लौटाता है।

इस सरणी के किसी भी आयाम के तत्वों को पुनः प्राप्त किया जा सकता है। उदाहरण के लिए, यदि निर्देशांक की संख्या इस सरणी के आयामों की संख्या के बराबर है, तो एक रैंक-0 (स्केलर) सरणी लौटा दी जाती है, जिसका मान `array.getObject()` पर कॉल करके प्राप्त किया जा सकता है।

लौटाए गए तत्वों पर लागू कोई भी परिवर्तन इस सरणी के डेटा को भी प्रभावित करता है, क्योंकि इसमें कोई प्रतिलिपि शामिल नहीं है।

ध्यान दें कि इस विधि को लागू करना इस सरणी को एकल स्केलर पर स्लाइस करने का एक समतुल्य और अधिक कुशल तरीका है, यानी array.get(x, y, z) array.slice(at(x), at(y), at(z)) के बराबर है array.slice(at(x), at(y), at(z))

पैरामीटर
COORDINATES एक्सेस करने के लिए तत्व के निर्देशांक, कोई भी इस सरणी को वापस नहीं करेगा
रिटर्न
  • इस सूचकांक में तत्व
फेंकता
IndexOutOfBoundsException यदि कुछ निर्देशांक अपने संबंधित आयाम की सीमा से बाहर हैं

सार्वजनिक सार टी getObject (लंबे... निर्देशांक)

दिए गए निर्देशांक पर पाए गए अदिश मान को लौटाता है।

स्केलर तत्व तक पहुंचने के लिए, प्रदान किए गए निर्देशांक की संख्या इस सरणी के आयामों की संख्या (यानी इसकी रैंक) के बराबर होनी चाहिए। उदाहरण के लिए:

FloatNdArray matrix = NdArrays.ofFloats(shape(2, 2));  // matrix rank = 2
  matrix.getObject(0, 1);  // succeeds, returns 0.0f
  matrix.getObject(0);  // throws IllegalRankException

  FloatNdArray scalar = matrix.get(0, 1);  // scalar rank = 0
  scalar.getObject();  // succeeds, returns 0.0f
 
ध्यान दें: यदि यह सरणी किसी आदिम प्रकार के मानों को संग्रहीत करती है, तो उस प्रकार के लिए उपवर्ग में विशेष विधि के उपयोग को प्राथमिकता दें। उदाहरण के लिए, floatArray.getFloat(0); .

पैरामीटर
COORDINATES हल करने के लिए अदिश के निर्देशांक
रिटर्न
  • उस अदिश राशि का मान
फेंकता
IndexOutOfBoundsException यदि कुछ निर्देशांक अपने संबंधित आयाम की सीमा से बाहर हैं
अवैधरैंक अपवाद यदि किसी अदिश तत्व तक पहुँचने के लिए निर्देशांकों की संख्या पर्याप्त नहीं है

सार्वजनिक सार NdArray <T> पढ़ें ( DataBuffer <T> dst)

इस एन-आयामी सरणी की सामग्री को गंतव्य बफर में पढ़ें।

बफ़र का आकार इस सरणी के size() के बराबर या उससे अधिक होना चाहिए, अन्यथा एक अपवाद फेंक दिया जाएगा। प्रतिलिपि के बाद, बफ़र और सरणी की सामग्री को एक-दूसरे को प्रभावित किए बिना, स्वतंत्र रूप से बदला जा सकता है।

पैरामीटर
डीएसटी गंतव्य बफ़र
रिटर्न
  • यह सरणी
फेंकता
बफ़रओवरफ़्लो अपवाद यदि बफ़र इस सरणी की सामग्री को धारण नहीं कर सकता है
यह भी देखें

सार्वजनिक सार NdArraySequence <? NdArray <T>> स्केलर का विस्तार करता है ()

इस सरणी में सभी अदिशों का अनुक्रम लौटाता है।

यह कॉल elements(shape().numDimensions() - 1) के बराबर है

रिटर्न
  • एक NdArray अनुक्रम

सार्वजनिक सार NdArray <T> सेट ( NdArray <T> src, long... निर्देशांक)

दिए गए निर्देशांक पर पाए गए एन-आयामी तत्व का मान निर्दिष्ट करता है।

प्रदान किए गए निर्देशांकों की संख्या 0 और रैंक - 1 के बीच कहीं भी हो सकती है। उदाहरण के लिए:

FloatNdArray matrix = NdArrays.ofFloats(shape(2, 2));  // matrix rank = 2
  matrix.set(vector(10.0f, 20.0f), 0);  // success
  matrix.set(scalar(10.0f), 1, 0); // success
 

पैरामीटर
स्रोत असाइन किए जाने वाले मानों की एक सारणी
COORDINATES असाइन किए जाने वाले तत्व के निर्देशांक
रिटर्न
  • यह सरणी
फेंकता
IndexOutOfBoundsException यदि कुछ निर्देशांक अपने संबंधित आयाम की सीमा से बाहर हैं

सार्वजनिक सार NdArray <T> सेटऑब्जेक्ट (T मान, लंबा... निर्देशांक)

दिए गए निर्देशांक पर पाए गए अदिश मान को निर्दिष्ट करता है।

स्केलर तत्व तक पहुंचने के लिए, प्रदान किए गए निर्देशांक की संख्या इस सरणी के आयामों की संख्या (यानी इसकी रैंक) के बराबर होनी चाहिए। उदाहरण के लिए:

FloatNdArray matrix = NdArrays.ofFloats(shape(2, 2));  // matrix rank = 2
  matrix.setObject(10.0f, 0, 1);  // succeeds
  matrix.setObject(10.0f, 0);  // throws IllegalRankException

  FloatNdArray scalar = matrix.get(0, 1);  // scalar rank = 0
  scalar.setObject(10.0f);  // succeeds
 
ध्यान दें: यदि यह सरणी किसी आदिम प्रकार के मानों को संग्रहीत करती है, तो उस प्रकार के लिए उपवर्ग में विशेष विधि के उपयोग को प्राथमिकता दें। उदाहरण के लिए, floatArray.setFloat(10.0f, 0);

पैरामीटर
कीमत असाइन किया जाने वाला मान
COORDINATES निर्दिष्ट करने के लिए अदिश के निर्देशांक
रिटर्न
  • यह सरणी
फेंकता
IndexOutOfBoundsException यदि कुछ निर्देशांक अपने संबंधित आयाम की सीमा से बाहर हैं
अवैधरैंक अपवाद यदि किसी अदिश तत्व तक पहुँचने के लिए निर्देशांकों की संख्या पर्याप्त नहीं है

सार्वजनिक सार NdArray <T> स्लाइस ( सूचकांक... सूचकांक)

दिए गए सूचकांक चयनकर्ताओं के लिए एक या अधिक आयामों को मैप करके इस सरणी का एक बहु-आयामी दृश्य (या स्लाइस) बनाता है।

स्लाइस किसी एन-आयामी सरणी को उसके किसी भी अक्ष में पार करने और/या केवल रुचि के तत्वों को फ़िल्टर करने की अनुमति देते हैं। उदाहरण के लिए, [x, y] अक्षों पर दिए गए मैट्रिक्स के लिए, सभी x के लिए y=0 पर तत्वों को पुनरावृत्त करना संभव है।

लौटाए गए स्लाइस पर लागू कोई भी परिवर्तन इस सरणी के डेटा को भी प्रभावित करता है, क्योंकि इसमें कोई प्रतिलिपि शामिल नहीं है।

उपयोग का उदाहरण:

FloatNdArray matrix3d = NdArrays.ofFloats(shape(3, 2, 4));  // with [x, y, z] axes

    // Iterates elements on the x axis by preserving only the 3rd value on the z axis,
    // (i.e. [x, y, 2])
    matrix3d.slice(all(), all(), at(2)).elements(0).forEach(m -> {
      assertEquals(shape(2), m); // y=2, z=0 (scalar)
    );

    // Creates a slice that contains only the last element of the y axis and elements with an
    // odd `z` coordinate.
    FloatNdArray slice = matrix3d.slice(all(), at(1), odd());
    assertEquals(shape(3, 2), slice.shape());  // x=3, y=0 (scalar), z=2 (odd coordinates)

    // Iterates backward the elements on the x axis
    matrix3d.slice(flip()).elements(0).forEach(m -> {
      assertEquals(shape(2, 4), m);  // y=2, z=4
    });
 }

पैरामीटर
सूचकांक इस सरणी के आयाम 0 से प्रारंभ करते हुए, प्रति आयाम सूचकांक चयनकर्ता।
रिटर्न
  • सूचकांक चयन का परिणामी तत्व
फेंकता
IndexOutOfBoundsException यदि कुछ निर्देशांक अपने संबंधित आयाम की सीमा से बाहर हैं

सार्वजनिक सार NdArray <T> लिखें ( DataBuffer <T> src)

स्रोत बफ़र से इस एन-आयामी सरणी की सामग्री लिखें।

बफ़र का आकार इस सरणी के size() के बराबर या उससे अधिक होना चाहिए, अन्यथा एक अपवाद फेंक दिया जाएगा। प्रतिलिपि के बाद, बफ़र और सरणी की सामग्री को एक-दूसरे को प्रभावित किए बिना, स्वतंत्र रूप से बदला जा सकता है।

पैरामीटर
स्रोत स्रोत बफ़र
रिटर्न
  • यह सरणी
फेंकता
बफ़रअंडरफ्लो अपवाद यदि बफ़र के पास इस सरणी में लिखने के लिए पर्याप्त शेष डेटा नहीं है
यह भी देखें