| Sous-classes indirectes connues  AbstractDenseNdArray <T, U étend NdArray <T>>, AbstractNdArray <T, U étend NdArray <T>>, BooleanDenseNdArray , BooleanNdArray , ByteDenseNdArray , ByteNdArray , DenseNdArray <T>, DoubleDenseNdArray , DoubleNdArray , FloatDenseNdArray , FloatNdArray , tDenseNdArray , IntNdArray , LongDenseNdArray , LongNdArray et 11 autres.  | 
Une structure de données à N dimensions.
L'interface `NdArray` crée une abstraction entre le stockage physique d'un enregistrement de données, qui peut être linéaire ou segmenté, et sa représentation logique. En général, ils obtiennent de meilleures performances que les tableaux multidimensionnels standards en Java en mappant directement des segments de données linéaires en mémoire.
 Comme DataBuffer , les instances NdArray prennent en charge l'indexation 64 bits afin de pouvoir être utilisées pour mapper des enregistrements de données très volumineux. Ils prennent également en charge des coordonnées spéciales qui permettent de parcourir leurs valeurs dans n'importe quelle direction ou de sélectionner uniquement un sous-ensemble d'entre elles.
Exemple d'utilisation :
// 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));
 Méthodes publiques
| abstrait NdArray <T> | |
| abstrait NdArraySequence <? étend NdArray <T>> |  éléments (int dimensionIdx)  Renvoie une séquence de tous les éléments à une dimension donnée. | 
| booléen abstrait |  est égal à (Obj objet)  Vérifie l'égalité entre les tableaux à n dimensions. | 
| abstrait NdArray <T> |  obtenir (longues... coordonnées)  Renvoie l'élément à N dimensions de ce tableau aux coordonnées données. | 
| résumé T |  getObject (longues... coordonnées)  Renvoie la valeur du scalaire trouvé aux coordonnées données. | 
| abstrait NdArray <T> |  lire ( DataBuffer <T> dst)  Lisez le contenu de ce tableau à N dimensions dans le tampon de destination. | 
| abstrait NdArraySequence <? étend NdArray <T>> |  scalaires ()  Renvoie une séquence de tous les scalaires de ce tableau. | 
| abstrait NdArray <T> | |
| abstrait NdArray <T> |  setObject (valeur T, coordonnées longues...)  Attribue la valeur du scalaire trouvé aux coordonnées données. | 
| abstrait NdArray <T> | |
| abstrait NdArray <T> |  écrire ( DataBuffer <T> src)  Écrivez le contenu de ce tableau à N dimensions à partir du tampon source.  | 
Méthodes héritées
Méthodes publiques
public abstrait NdArray <T> copyTo ( NdArray <T> dst)
Copiez le contenu de ce tableau dans le tableau de destination.
 Le shape() du tableau de destination doit être égal à la forme de ce tableau, sinon une exception est levée. Après la copie, le contenu des deux tableaux peut être modifié indépendamment, sans s'affecter mutuellement. 
Paramètres
| heure d'été | tableau pour recevoir une copie du contenu de ce tableau | 
|---|
Retours
- ce tableau
Jetés
| IllegalArgumentException | si la forme de dstn'est pas égale à la forme de ce tableau | 
|---|
public abstrait NdArraySequence <? étend les éléments NdArray <T>> (int dimensionIdx)
Renvoie une séquence de tous les éléments à une dimension donnée.
 Logiquement, le tableau à N dimensions peut être aplati en un seul vecteur, où les scalaires du (n - 1) ème élément précèdent ceux du (n) ème élément, pour un total de valeurs size() .
 Par exemple, étant donné une matrice nxm sur les axes [x, y] , les éléments sont itérés dans l'ordre suivant :
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
 La séquence renvoyée peut ensuite être itérée pour visiter chaque élément, soit en appelant forEach(Consumer) ou 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);
    });
 }Paramètres
| dimensionIdx | indice de la dimension | 
|---|
Retours
-  une séquence NdArray
Jetés
| IllegalArgumentException | si dimensionIdxest supérieur ou égal au nombre total de dimensions de ce tableau | 
|---|
public abstrait booléen égal (Objet obj)
Vérifie l'égalité entre les tableaux à n dimensions.
 Un tableau est égal à un autre objet si cet objet est un autre NdArray de même forme, type et que les éléments sont égaux et dans le même ordre. Par exemple:
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
 }Notez que le calcul nécessaire pour vérifier l'égalité entre deux tableaux peut être coûteux dans certains cas et par conséquent, il est recommandé de ne pas utiliser cette méthode dans un chemin critique où les performances comptent.
Paramètres
| obj | objet avec lequel comparer ce tableau | 
|---|
Retours
- vrai si ce tableau est égal à l'objet fourni
public abstract NdArray <T> get (coordonnées longues...)
Renvoie l'élément à N dimensions de ce tableau aux coordonnées données.
Des éléments de n’importe quelle dimension de ce tableau peuvent être récupérés. Par exemple, si le nombre de coordonnées est égal au nombre de dimensions de ce tableau, alors un tableau de rang 0 (scalaire) est renvoyé, dont la valeur peut ensuite être obtenue en appelant « array.getObject() ».
Toute modification appliquée aux éléments renvoyés affecte également les données de ce tableau, car aucune copie n'est impliquée.
 Notez que l'invocation de cette méthode est un moyen équivalent et plus efficace de découper ce tableau sur un seul scalaire, c'est-à-dire que array.get(x, y, z) est égal à array.slice(at(x), at(y), at(z)) 
Paramètres
| coordonnées | coordonnées de l'élément auquel accéder, aucun ne renverra ce tableau | 
|---|
Retours
- l'élément à cet index
Jetés
| IndexOutOfBoundsException | si certaines coordonnées sont hors des limites de leur dimension respective | 
|---|
public abstract T getObject (coordonnées longues...)
Renvoie la valeur du scalaire trouvé aux coordonnées données.
Pour accéder à l'élément scalaire, le nombre de coordonnées fournies doit être égal au nombre de dimensions de ce tableau (c'est à dire son rang). Par exemple:
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); . Paramètres
| coordonnées | coordonnées du scalaire à résoudre | 
|---|
Retours
- valeur de ce scalaire
Jetés
| IndexOutOfBoundsException | si certaines coordonnées sont hors des limites de leur dimension respective | 
|---|---|
| IllégalRankException | si le nombre de coordonnées n'est pas suffisant pour accéder à un élément scalaire | 
public abstrait NdArray <T> lecture ( DataBuffer <T> dst)
Lisez le contenu de ce tableau à N dimensions dans le tampon de destination.
 La taille du tampon doit être égale ou supérieure à la size() de ce tableau, sinon une exception est levée. Après la copie, le contenu du buffer et du tableau peut être modifié indépendamment, sans s'affecter mutuellement. 
Paramètres
| heure d'été | le tampon de destination | 
|---|
Retours
- ce tableau
Jetés
| BufferOverflowException | si le tampon ne peut pas contenir le contenu de ce tableau | 
|---|
Voir aussi
public abstrait NdArraySequence <? étend les scalaires NdArray <T>> ()
Renvoie une séquence de tous les scalaires de ce tableau.
 Cela équivaut à appeler elements(shape().numDimensions() - 1) 
Retours
-  une séquence NdArray
public abstract NdArray <T> set ( NdArray <T> src, coordonnées longues...)
Attribue la valeur de l'élément à N dimensions trouvé aux coordonnées données.
Le nombre de coordonnées fournies peut être compris entre 0 et le rang - 1. Par exemple :
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
 Paramètres
| src | un tableau des valeurs à attribuer | 
|---|---|
| coordonnées | coordonnées de l'élément à affecter | 
Retours
- ce tableau
Jetés
| IndexOutOfBoundsException | si certaines coordonnées sont hors des limites de leur dimension respective | 
|---|
public abstract NdArray <T> setObject (valeur T, coordonnées longues...)
Attribue la valeur du scalaire trouvé aux coordonnées données.
Pour accéder à l'élément scalaire, le nombre de coordonnées fournies doit être égal au nombre de dimensions de ce tableau (c'est à dire son rang). Par exemple:
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); Paramètres
| valeur | la valeur à attribuer | 
|---|---|
| coordonnées | coordonnées du scalaire à attribuer | 
Retours
- ce tableau
Jetés
| IndexOutOfBoundsException | si certaines coordonnées sont hors des limites de leur dimension respective | 
|---|---|
| IllégalRankException | si le nombre de coordonnées n'est pas suffisant pour accéder à un élément scalaire | 
tranche publique abstraite NdArray <T> ( Index... indices)
Crée une vue (ou tranche) multidimensionnelle de ce tableau en mappant une ou plusieurs dimensions aux sélecteurs d'index donnés.
 Les tranches permettent de parcourir un tableau à N dimensions dans n'importe lequel de ses axes et/ou de filtrer uniquement les éléments d'intérêt. Par exemple, pour une matrice donnée sur les axes [x, y] , il est possible d'itérer les éléments à y=0 pour tous x .
Toute modification appliquée à la tranche renvoyée affecte également les données de ce tableau, car aucune copie n'est impliquée.
Exemple d'utilisation :
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
    });
 }Paramètres
| indices | sélecteurs d'index par dimensions, à partir de la dimension 0 de ce tableau. | 
|---|
Retours
- l'élément résultant de la sélection de l'index
Jetés
| IndexOutOfBoundsException | si certaines coordonnées sont hors des limites de leur dimension respective | 
|---|
public abstrait NdArray <T> écriture ( DataBuffer <T> src)
Écrivez le contenu de ce tableau à N dimensions à partir du tampon source.
 La taille du tampon doit être égale ou supérieure à la size() de ce tableau, sinon une exception est levée. Après la copie, le contenu du buffer et du tableau peut être modifié indépendamment, sans s'affecter mutuellement. 
Paramètres
| src | le tampon source | 
|---|
Retours
- ce tableau
Jetés
| BufferUnderflowException | si le tampon n'a pas suffisamment de données restantes pour écrire dans ce tableau | 
|---|