Convertir ArrayD a Array2 en Rust

Nilesh Katuwal 21 junio 2023
  1. Matriz en Rust
  2. Inicialización y Declaración de Array en Rust
  3. Matriz ND en Rust
  4. Matriz 2 en Rust
  5. Conversión de ArrayD a Array2 en Rust
Convertir ArrayD a Array2 en Rust

Este artículo trata sobre la conversión de ArrayD a Array2 en Rust.

Matriz en Rust

Una matriz es una colección de valores del mismo tipo. Un grupo de la importancia del mismo tipo de datos se denomina matriz.

En la programación de Rust, una matriz es una colección de elementos de tamaño fijo indicada por [T; N], donde T representa el tipo de elemento y N denota el tamaño constante de tiempo de compilación de la matriz.

Una matriz se puede crear de dos maneras distintas.

  1. Simplemente una lista de elementos [x,y,z].
  2. Repetición de la expresión [N, X]. Esto crea una matriz que contiene N instancias de X.

Inicialización y Declaración de Array en Rust

Hay varias sintaxis para crear una matriz en Rust. Algunos de ellos son:

Sintaxis:

Syntax 1:
let var_name = [val_1,val_2,val_3];

Example:
let _cars = ["BMW","Toyota","Ferrari"];
Syntax 2:
let var_name:[dataType;size_of_array] = [val_1,val_2,val_3];

Example:
let _numbers:[i32;3] = [1,2,3];
Syntax 3:
let var_name:[dataType;size_of_array] = [default_value,size_of_array];

Example:
let _num_array:[i32;3] = [0;3];
  1. En la primera sintaxis, cars es el nombre de la variable y BMW, Toyota y Ferrari son los valores de la matriz.
  2. En la segunda sintaxis, “números” es el nombre de la variable, i32 es el tipo de datos, 3 es el tamaño de la matriz y 1, 2 y 3 son los valores de la matriz.
  3. En la tercera sintaxis, num_array es el nombre de la variable, i32 es el tipo de datos, 3 es el tamaño de la matriz, 0 es el valor predeterminado para los elementos y 3 es el tamaño de la matriz.

Matriz ND en Rust

La estructura de datos de matriz N-dimensional se utiliza con frecuencia en la computación y el procesamiento científicos.

La caja ndarray implementa el soporte de matriz N-dimensional en Rust. Otras cajas hacen un uso extensivo de él.

Matriz 2 en Rust

La matriz 2 es la matriz bidimensional. Se puede crear fácilmente usando la macro arr2.

El ejemplo de creación de una matriz 2D 3x3 se muestra a continuación.

extern crate ndarray;
use ndarray::arr2;

fn main() {
    let mut two_dimensional_array = array2(&[[4, 5, 6],
                    [10, 11, 12],
                    [20, 21, 22]]);
    array2[[2, 1]] = 10;
    println!("The two dimensional array is {:?}", array2);
}

Producción :

The two dimensional array is [[4, 5, 6],
 [10, 11, 12],
 [20, 21, 22]], shape=[3, 3], strides=[3, 1], layout=Cc (0x5), const ndim=2

Conversión de ArrayD a Array2 en Rust

La conversión de una matriz a otra es posible con el mismo tipo, pero las dimensiones deben ser diferentes. El error ocurrirá si las dimensiones de la matriz no concuerdan.

Por lo tanto, el número de ejes debe coincidir durante la conversión.

Para convertir una matriz n-dimensional en una matriz 2d:

Podemos seguir el siguiente código si el tipo de variable es ArrayD<f32>.

let arr2d: Array2<f32> = arr2d.into_dimensionality::<Ix2>()?;

El código anterior es para convertirlo en una variable de tipo Array2<f32>.

use ndarray::{ArrayD, Ix2, IxDyn};

let array = ArrayD::<f32>::zeros(IxDyn(&[5, 5]));
assert!(array.into_dimensionality::<Ix2>().is_ok());

Arriba está el código para crear una matriz dimensional dinámica y convertirla en una dimensión I * 2.

Artículo relacionado - Rust Array