Rust에서 ArrayD를 Array2로 변환
Nilesh Katuwal
2023년6월21일
이 문서는 Rust에서 ArrayD
를 Array2
로 변환하는 방법에 관한 것입니다.
Rust의 배열
배열은 동일한 유형의 값 모음입니다. 동일한 데이터 유형의 중요도 그룹을 배열이라고 합니다.
Rust 프로그래밍에서 배열은 [T; N]
, 여기서 T
는 요소 유형을 나타내고 N
은 배열의 컴파일 타임 상수 크기를 나타냅니다.
배열은 두 가지 방법으로 만들 수 있습니다.
- 단순히
[x,y,z]
요소 목록입니다. [N, X]
표현의 반복. 이렇게 하면X
의N
인스턴스를 포함하는 배열이 생성됩니다.
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];
- 첫 번째 구문에서
cars
는 변수 이름이고BMW
,Toyota
및Ferrari
는 배열의 값입니다. - 두 번째 구문에서
숫자
는 변수 이름,i32
는 데이터 유형,3
은 배열 크기,1
,2
및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에서 ArrayD
를 Array2
로 변환
동일한 유형으로 배열을 다른 배열로 변환할 수 있지만 크기는 달라야 합니다. 배열의 크기가 일치하지 않으면 오류가 발생합니다.
따라서 변환하는 동안 축의 수가 일치해야 합니다.
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
차원으로 변환하는 코드입니다.