| Известные косвенные подклассы  AbstractDenseNdArray <T, U расширяет NdArray <T>>, AbstractNdArray <T, U расширяет NdArray <T>>, BooleanDenseNdArray , BooleanNdArray , ByteDenseNdArray , ByteNdArray , DenseNdArray <T>, DoubleDenseNdArray , DoubleNdArray , FloatDenseNdArray , FloatNdArray , IntDenseNdArray , IntNdArray , LongDenseNdArray , LongNdArray и еще 11.  | 
Структура данных N-размеров.
Интерфейс NdArray создает абстракцию между физическим хранилищем записи данных, которое может быть линейным или сегментированным, и ее логическим представлением. В целом они достигают более высокой производительности, чем стандартные многомерные массивы в Java, путем непосредственного сопоставления линейных сегментов данных в памяти.
 Как и 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));
 Публичные методы
| абстрактный NdArray <T> | |
| абстрактный NdArraySequence <? расширяет NdArray <T>> |  элементы (int DimensionIdx)  Возвращает последовательность всех элементов заданного измерения. | 
| абстрактное логическое значение |  равно (Объект obj)  Проверяет равенство n-мерных массивов. | 
| абстрактный NdArray <T> |  получить (длинные... координаты)  Возвращает N-мерный элемент этого массива по заданным координатам. | 
| абстрактная Т |  getObject (длинные... координаты)  Возвращает значение скаляра, найденного в заданных координатах. | 
| абстрактный NdArray <T> | |
| абстрактный NdArraySequence <? расширяет NdArray <T>> |  скаляры ()  Возвращает последовательность всех скаляров в этом массиве. | 
| абстрактный NdArray <T> | |
| абстрактный NdArray <T> |  setObject (значение T, длинные... координаты)  Присваивает значение скаляра, найденного в заданных координатах. | 
| абстрактный NdArray <T> | |
| абстрактный NdArray <T> | 
Унаследованные методы
Публичные методы
общедоступный абстрактный NdArray <T> copyTo ( NdArray <T> dst)
Скопируйте содержимое этого массива в целевой массив.
 shape() целевого массива должна быть равна форме этого массива, иначе будет выдано исключение. После копирования содержимое обоих массивов можно изменять независимо, не затрагивая друг друга. 
Параметры
| летнее время | массив для получения копии содержимого этого массива | 
|---|
Возврат
- этот массив
Броски
| IllegalArgumentException | если форма dstне равна форме этого массива | 
|---|
публичный абстрактный NdArraySequence <? расширяет элементы NdArray <T>> (int DimensionIdx)
Возвращает последовательность всех элементов заданного измерения.
 Логично, что N-мерный массив может быть сведен в один вектор, где скаляры (n - 1) -го элемента предшествуют скалярам (n) -го элемента, для общего количества значений size() .
 Например, для матрицы nxm по осям [x, y] элементы повторяются в следующем порядке:
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больше или равен общему количеству измерений этого массива | 
|---|
общедоступное абстрактное логическое значение равно (Object obj)
Проверяет равенство между n-мерными массивами.
 Массив равен другому объекту, если этот объект является другим 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
 }Обратите внимание, что вычисления, необходимые для проверки равенства между двумя массивами, в некоторых случаях могут быть дорогостоящими, поэтому рекомендуется не использовать этот метод на критическом пути, где производительность имеет значение.
Параметры
| объект | объект для сравнения этого массива с | 
|---|
Возврат
- true, если этот массив равен предоставленному объекту
общедоступный абстрактный NdArray <T> get (длинные... координаты)
Возвращает N-мерный элемент этого массива по заданным координатам.
Можно извлечь элементы любого измерения этого массива. Например, если количество координат равно количеству измерений этого массива, то возвращается массив ранга 0 (скалярный), значение которого затем можно получить, вызвав `array.getObject()`.
Любые изменения, примененные к возвращаемым элементам, также влияют на данные этого массива, поскольку копирование не требуется.
 Обратите внимание, что вызов этого метода является эквивалентным и более эффективным способом разрезать этот массив на один скаляр, т.е. array.get(x, y, z) равен array.slice(at(x), at(y), at(z)) 
Параметры
| координаты | координаты элемента, к которому осуществляется доступ, никто не вернет этот массив | 
|---|
Возврат
- элемент по этому индексу
Броски
| Индексаутофбаундсисключение | если некоторые координаты находятся за пределами соответствующего измерения | 
|---|
общедоступный абстрактный T 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); . Параметры
| координаты | координаты скаляра для разрешения | 
|---|
Возврат
- значение этого скаляра
Броски
| Индексаутофбаундсисключение | если некоторые координаты находятся за пределами соответствующего измерения | 
|---|---|
| IllegalRankException | если количества координат недостаточно для доступа к скалярному элементу | 
общедоступное абстрактное чтение NdArray <T> ( DataBuffer <T> dst)
Считайте содержимое этого N-мерного массива в целевой буфер.
 Размер буфера должен быть равен или больше size() этого массива, иначе будет выдано исключение. После копирования содержимое буфера и массива можно изменять независимо, не затрагивая друг друга. 
Параметры
| летнее время | буфер назначения | 
|---|
Возврат
- этот массив
Броски
| исключение BufferOverflowException | если буфер не может содержать содержимое этого массива | 
|---|
См. также
публичный абстрактный NdArraySequence <? расширяет скаляры NdArray <T>> ()
Возвращает последовательность всех скаляров в этом массиве.
 Это эквивалентно вызову elements(shape().numDimensions() - 1) 
Возврат
-  последовательность NdArray
общедоступный абстрактный набор NdArray <T> ( NdArray <T> src, long... координаты)
Присваивает значение N-мерного элемента, найденного по заданным координатам.
Количество предоставленных координат может быть от 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
 Параметры
| источник | массив значений для присвоения | 
|---|---|
| координаты | координаты элемента для назначения | 
Возврат
- этот массив
Броски
| Индексаутофбаундсисключение | если некоторые координаты находятся за пределами соответствующего измерения | 
|---|
общедоступный абстрактный NdArray <T> setObject (значение 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); Параметры
| ценить | значение, которое нужно присвоить | 
|---|---|
| координаты | координаты скаляра, который нужно назначить | 
Возврат
- этот массив
Броски
| Индексаутофбаундсисключение | если некоторые координаты находятся за пределами соответствующего измерения | 
|---|---|
| IllegalRankException | если количества координат недостаточно для доступа к скалярному элементу | 
общедоступный абстрактный фрагмент NdArray <T> ( индекс... индексы)
Создает многомерное представление (или срез) этого массива путем сопоставления одного или нескольких измерений с заданными селекторами индекса.
 Срезы позволяют перемещаться по N-мерному массиву по любой его оси и/или фильтровать только интересующие элементы. Например, для данной матрицы по осям [x, y] можно перебирать элементы по координатам y=0 для всех x .
Любые изменения, примененные к возвращенному фрагменту, также влияют на данные этого массива, поскольку копирование не требуется.
Пример использования:
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 этого массива. | 
|---|
Возврат
- элемент, полученный в результате выбора индекса
Броски
| Индексаутофбаундсисключение | если некоторые координаты находятся за пределами соответствующего измерения | 
|---|
публичная абстрактная запись NdArray <T> ( DataBuffer <T> src)
Запишите содержимое этого N-мерного массива из исходного буфера.
 Размер буфера должен быть равен или больше size() этого массива, иначе будет выдано исключение. После копирования содержимое буфера и массива можно изменять независимо, не затрагивая друг друга. 
Параметры
| источник | исходный буфер | 
|---|
Возврат
- этот массив
Броски
| BufferUnderflowException | если в буфере недостаточно оставшихся данных для записи в этот массив | 
|---|