ndarray class : 동일한 자료형을 가진 값들이 행렬 형태로 N차원 배열 생성
스스로 자료형을 유추하여 자동 할당
리스트나 튜플 또는 ndarray 클래스 등을 중첩하여 배열 생성 가능
np.array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0)
<array 함수 정의>
object : 입력된 개체의 형태와 동일한 배열 구조로 Numpy 배열 정의
dtype : 배열의 자료형. 가령 object가 0과1로 구성된 배열일경우 값을 유추하여 int32형태 numpy 배열 생성. bool로 지정할 경우 True와 False 값으로 생성.
copy : 객체를 복사하여 생성할지 선택. False로 지정하면 자료형이나 순서 등을 고려해서 객체를 복사할지 선택. 자료형이나 형태가 다르다면 false여도 객체를 복사하여 생성.
order : 배열의 메모리 레이아웃 설정. 크게 C스타일과 Fortran 스타일의 메모리 레이아웃이 있음.
-> C 스타일의 메모리 순서 : 다차원 배열은 가장 빠르게 변화하는 색인의 순서로 할당. [i][j][k] 형태로 색인이 구성되었을 경우 k의 값부터 순차적으로 증가, 뒤의 배열 색인이 최댓값에 도달하면 그앞의 색인이 증가. 행을 먼저 순차적으로 저장
-> Fortran 스타일의 메모리 순서 : C와 반대로 i 값부터 순차 증가, 앞의 배열 색인이 최대값에 도달하면 그 뒤의 색인이 증가. 열을 먼저 순차적으로 저장
subok : 하위 클래스에서 배열 생성 여부를 나타냄. True일 경우 하위 클래스에 전달, False일 경우 반환된 배열은 ndarray 클래스가 됨.
ndmin : 반환된 배열의 최소 차원 수. 입력된 객체가 1차원 배열일 때 ndmin이 3이라면 3차원 배열로 생성. [1,2,3] -> [[[1,2,3]]]
order | copy=False | copy=True |
‘K’ | 레이아웃에 최대한 일치 | |
‘A’ | Fortran에 근접할 경우 F order, 아닐경우 C order | |
‘C’ | C order | C order |
‘F’ | Fortran order | Fortran order |
<array의 메모리 레이아웃 설정>
import numpy as np
array1 = np.array([[1,2,3], [4,5,6]])
array2 = np.array([1,2,3], dtype=complex, ndmin=3)
array3 = np.array(array1, copy=False)
array4 = np.array(np.mat('1 2 ; 3 4'), subok=True)
array1[0] = [4,5,6]
print(array1)
print(array2)
print(array3)
print(type(array4))
<Numpy 배열 생성>
[[4 5 6][4 5 6]]
[[[1.+0.j 2.+0.j 3.+0.j]]]
[[4 5 6][4 5 6]]
<class 'numpy.matrix'>
array1 : 리스트를 통해 기본적인 2차원 배열 생성
array2 : dtype과 ndmin을 할당하여 복소수 형태의 3차원 배열 생성
array3 : copy를 False로 지정해 array1 참조. 결과값이 할당된 이후에 array1의 값을 변경했지만 배열을 복제하지 않아 array1의 값을 그대로 가짐
array4 : mat() 함수로 하위 클래스로서 ndarray 클래스가 아닌 matrix 클래스 사용
-> matrix 클래스는 입력된 배열을 행렬로 인식.
'영상처리 > OpenCV' 카테고리의 다른 글
배열 병합 및 분리 (0) | 2022.06.07 |
---|---|
배열 차원 변형 (0) | 2022.06.07 |
배열의 블록 단위 요소에 접근 (0) | 2022.06.07 |
배열의 개별 단위 요소에 접근 방법 (0) | 2022.06.07 |
OpenCV 이론 (0) | 2022.06.07 |