Rust에서 ArrayD를 Array2로 변환

Nilesh Katuwal 2023년6월21일
  1. Rust의 배열
  2. Rust에서 배열 초기화 및 선언
  3. Rust의 ND 어레이
  4. Rust의 배열 2
  5. Rust에서 ArrayDArray2로 변환
Rust에서 ArrayD를 Array2로 변환

이 문서는 Rust에서 ArrayDArray2로 변환하는 방법에 관한 것입니다.

Rust의 배열

배열은 동일한 유형의 값 모음입니다. 동일한 데이터 유형의 중요도 그룹을 배열이라고 합니다.

Rust 프로그래밍에서 배열은 [T; N], 여기서 T는 요소 유형을 나타내고 N은 배열의 컴파일 타임 상수 크기를 나타냅니다.

배열은 두 가지 방법으로 만들 수 있습니다.

  1. 단순히 [x,y,z] 요소 목록입니다.
  2. [N, X] 표현의 반복. 이렇게 하면 XN 인스턴스를 포함하는 배열이 생성됩니다.

Rust에서 배열 초기화 및 선언

Rust에서 배열을 생성하기 위한 여러 구문이 있습니다. 그들 중 일부는 다음과 같습니다.

구문:

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. 첫 번째 구문에서 cars는 변수 이름이고 BMW, ToyotaFerrari는 배열의 값입니다.
  2. 두 번째 구문에서 숫자는 변수 이름, i32는 데이터 유형, 3은 배열 크기, 1, 23은 배열의 값입니다.
  3. 세 번째 구문에서 num_array는 변수 이름, i32는 데이터 유형, 3은 배열 크기, 0은 요소의 기본값, 3은 배열 크기입니다.

Rust의 ND 어레이

N 차원 배열 데이터 구조는 과학 컴퓨팅 및 처리에 자주 사용됩니다.

ndarray 크레이트는 Rust에서 N-dimensional 배열 지원을 구현합니다. 다른 상자는 그것을 광범위하게 사용합니다.

Rust의 배열 2

배열 2는 2차원 배열입니다. arr2 매크로를 사용하여 쉽게 만들 수 있습니다.

3x3 2D 배열을 만드는 예는 다음과 같습니다.

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);
}

출력:

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

Rust에서 ArrayDArray2로 변환

동일한 유형으로 배열을 다른 배열로 변환할 수 있지만 크기는 달라야 합니다. 배열의 크기가 일치하지 않으면 오류가 발생합니다.

따라서 변환하는 동안 축의 수가 일치해야 합니다.

n차원 배열을 2차원 배열로 변환하려면:

변수 유형이 ArrayD<f32>인 경우 다음 코드를 따를 수 있습니다.

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

위의 코드는 Array2<f32> 유형의 변수로 변환하는 것입니다.

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

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

위는 동적 차원 배열을 생성하고 이를 I * 2 차원으로 변환하는 코드입니다.

관련 문장 - Rust Array