Numpy는 다차원 배열을 효과적으로 처리할 수 있는 python의 도구이다.
사용할 IDE는 PyCharm이고, 인터프리터에 Numpy를 추가하여 개발 환경을 구성한다.
1. Numpy의 기본 문법
list 자료형을 numpy로 바꾸었다. 'array'는 numpy 라이브러리의 내장 Attribute이므로 다른 단어로 바꿔쓰면 안된다. 이렇게 바꾸어진 Numpy는 행렬의 형태로 array변수에 저장이 된다.
import numpy as np
array1 = np.arange(4)
#0부터 3까지의 배열 만들기
array2 = np.zeros((4, 4), dtype=float)
#o으로 배열 초기화
array3 = np.ones((3, 3), dtype=str)
#'1'으로 배열 초기화
array4 = np.random.randint(0, 10, (3, 3))
#0부터 9까지 랜덤으로 초기화된 배열 만들기
array5 = np.random.normal(0, 1, (3, 3))
#평균이 0이고 표준편차가 1인 표준 정규를 띄는 배열
print(array1)
print(array2)
print(array3)
print(array4)
print(array5)
두 가지 배열을 concatenate 함수를 이용해 '합친' 코드. shape 함수의 기능은 뭘까... ?
shape함수는 배열의 행과 열의 개수를 반환한다 .
reshape함수를 이용해 [ 1 2 3 4 ]형태의 배열을 (2,2)형태로 바꾸었다.
print(array2)를 시행하면 [ 1 2] \n [3 4]의 형태로 변환되는 것을 볼 수 있다.
concatenate 함수의 인자에 axis=0 을 넣어 합쳤더니 array2이 array1의 마지막 행의 아래부터 추가된 것을 볼 수 있다.
2. Numpy의 연산
import numpy as np
array = np.random.randint(1, 10, size=4).reshape(2, 2)
result_array = array * 10
print(result_array)
이런 식으로 배열에 10을 곱하면 배열 내의 각각의 원소에 10이 곱해진다.
배열의 크기가 맞지 않으면 자동으로 연산 가능한 형태로 배열을 수정해준다.
Numpy의 마스킹 연산 : 각 원소에 대해 T or F를 체크한다.
...! array1의 배열에서 array2(True or false 행렬) 중에 True인 원소의 값을 100으로 설정하였다.
Numpy의 집계함수
자동으로 최대 최소 합계 평균도 출력해주고여
행 혹은 열끼리의 연산도 가능하다.
axis = 0 : 열, axis = 1 : 행
3. Numpy의 활용
npy파일이 동일 디렉터리에 생성된다.
sort()의 매개변수에 axis=0 혹은 axis=1을 입력하면 열 혹은 행 기준으로 정렬할 수 있다.(default가 axis=1인듯?)
linspace(0, 10, 5)는 0부터 10까지 5개의 요소를 만들라는 말이다. 즉 2.5의 간격으로 5개의 숫자가 만들어지는 셈이다
np.random.seed 함수는 난수의 시드값을 설정해 난수 생성 시 해당 시드값에 해당하는 난수(아웃풋)을 생성하는 것이다. 시드값을 설정하지 않으면 컴파일 횟수마다 다른 난수 값이 생성된다.
copy함수는 말그대로 배열의 요소를 다른 배열에 그대로 복사하는 것을 의미하고,
unique 함수는 매개변수에 들어온 배열을 평면화하고(1차원), 정렬된 고유값을 반환한다.
'Other > OpenCV' 카테고리의 다른 글
OpenCV 이미지 처리 (0) | 2021.05.15 |
---|