David의 개발 이야기!
Numpy 에 대해 알아보자 본문
반응형
인공지능(데이터분석)을 공부할때, 반드시 사용하게 되는 라이브러리 4대장이 있다.
Numpy : 벡터, 행렬 연산 라이브러리
Pandas : 쉽게 말하면, 그냥 엑셀
OpenCV : 이미지 처리 라이브러리
Matplotlib : 시각화 도구(그래프 그려주는 거)
이걸 하나하나 정리해보려고 한다!
사용법에 대한 간략한 정리니, 한번 훑어봐보자.
0. 벡터와 행렬
- 컴퓨터에서 벡터를 표현할때, 1차원 배열을 사용한다.
- 행렬(Matrix)란, N행, M열로 나열된 실수의 2차원 배열이다.
=> 벡터와 행렬을 다루기 쉽게 도와주는 라이브러리가 Numpy 이다!!
1. 리스트와 numpy 는 서로 상호변환이 가능하다 - size, dtype
import numpy as np
array = np.array([1, 2, 3])
print(array.size) # 배열의 크기
print(array.dtype)# 배열 원소의 타입
print(array[2]) # 인덱스 2의 원소
3
int64
3
2. Numpy 배열 초기화하기 - arange / zeros / ones / random.randint
import numpy as np
# 0부터 3까지의 배열 만들기
array1 = np.arange(4)
print(array1)
# 0으로 초기화
array2 = np.zeros((4, 4), dtype=float)
print(array2)
# 1로 초기화
array3 = np.ones((3, 3), dtype=str)
print(array3)
# 0부터 9까지 랜덤하게 초기화된 배열 만들기
array4 = np.random.randint(0, 10, (3, 3))
print(array4)
# 평균이 0이고, 표준편차가 1인 표준 정규를 띄는 배열
array5 = np.random.normal(0, 1, (3, 3))
print(array5)
[0 1 2 3]
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
[['1' '1' '1']
['1' '1' '1']
['1' '1' '1']]
[[7 5 0]
[3 8 0]
[1 7 1]]
[[ 0.64728728 -0.61212745 -0.81683276]
[ 1.6212868 -1.00531953 -1.63351014]
[ 0.95283383 1.64552489 0.40630007]]
3. Numpy 배열 합치기 - concatenate
import numpy as np
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
array3 = np.concatenate([array1, array2])
print(array3.shape)
print(array3)
(6,)
[1 2 3 4 5 6]
4. Numpy 세로 축으로 합치기 - concatenate(axis=0)
import numpy as np
array1 = np.arange(4).reshape(1, 4)
array2 = np.arange(8).reshape(2, 4)
array3 = np.concatenate([array1, array2], axis=0)
print(array3.shape)
print(array3)
(3, 4)
[[0 1 2 3]
[0 1 2 3]
[4 5 6 7]]
5. Numpy 배열 나누기
import numpy as np
array = np.arange(8).reshape(2, 4)
#만들어진 array를 index가 2열을 기준으로 나누어라
left, right = np.split(array, [2], axis=1)
print(left.shape)
print(right.shape)
print(right[1][1])
(2, 2)
(2, 2)
7
6. Numpy 상수 연산
import numpy as np
array = np.random.randint(1, 10, size=4).reshape(2, 2)
result_array = array * 10
print(result_array)
[[80 10]
[50 70]]
7. 서로 다른 형태의 Numpy 배열 연산 - reshape
import numpy as np
array1 = np.arange(4).reshape(2, 2)
array2 = np.arange(2)
array3 = array1 + array2
print(array3)
[[0 2]
[2 4]]
import numpy as np
array1 = np.arange(0, 8).reshape(2, 4)
array2 = np.arange(0, 8).reshape(2, 4)
array3 = np.concatenate([array1, array2], axis=0)
array4 = np.arange(0, 4).reshape(4, 1)
print(array3 + array4)
[[ 0 1 2 3]
[ 5 6 7 8]
[ 2 3 4 5]
[ 7 8 9 10]]
8. Numpy 마스킹 연산 - reshape, 마스킹연산
import numpy as np
array1 = np.arange(16).reshape(4, 4)
print(array1)
array2 = array1 < 10
print(array2)
array1[array2] = 100
print(array1)
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
[[ True True True True]
[ True True True True]
[ True True False False]
[False False False False]]
[[100 100 100 100]
[100 100 100 100]
[100 100 10 11]
[ 12 13 14 15]]
9. Numpy 집계 연산 - min, max, sum, mean
import numpy as np
array = np.arange(16).reshape(4, 4)
print("최대값:", np.max(array))
print("최소값:", np.min(array))
print("합계:", np.sum(array))
print("평균값:", np.mean(array))
최대값: 15
최소값: 0
합계: 120
평균값: 7.5
* 열마다 합을 구하고 싶다면?
import numpy as np
array = np.arange(16).reshape(4, 4)
print(array)
print("합계:", np.sum(array, axis=0))
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
합계: [24 28 32 36]
10. Numpy 객체 저장 및 불러오기 - np.save
*단일 객체 저장 및 불러오기
import numpy as np
#단일 객체 저장 및 불러오기
array = np.arange(0, 10)
np.save('saved.npy', array)
result = np.load('saved.npy')
print(result)
[0 1 2 3 4 5 6 7 8 9]
*여러개의 Numpy객체를 하나의 파일에 저장 및 불러오기
import numpy as np
# 복수 객체 저장 및 불러오기
array1 = np.arange(0, 10)
array2 = np.arange(10, 20)
np.save('saved.npz', array1=array1, array2=array2)
data = np.load('saved.npz')
result1 = data['array1']
result2 = data['array2']
print(result1)
print(result2)
[0 1 2 3 4 5 6 7 8 9]
[10 11 12 13 14 15 16 17 18 19]
11. Numpy 원소의 정렬 - sort, [::-1], sort(axis=0)
import numpy as np
# Numpy 원소 오름차순 정렬
array = np.array([5, 9, 10, 3, 1])
array.sort()
print(array)
# Numpy 원소 내림차순 정렬
array = np.array([5, 9, 10, 3, 1])
array.sort()
print(array[::-1])
# 각 열을 기준으로 정렬
array = np.array([[5, 9, 10, 3, 1], [8, 3, 4, 2, 5]])
array.sort(axis=0)
print(array)
[ 1 3 5 9 10]
[10 9 5 3 1]
[[ 5 3 4 2 1]
[ 8 9 10 3 5]]
12. 자주 사용하는 기타 함수 - np.linspace, np.random.seed, copy(), unique()
import numpy as np
# 균일한 간격으로 데이터 생성
array = np.linspace(0, 10, 5)
print(array)
# 난수의 재연(실행마다 결과 동일)
np.random.seed(7)
print(np.random.randint(0, 10, (2, 3)))
# Numpy 배열 객체 복사
array1 = np.arange(0, 10)
array2 = array1.copy()
print(array2)
# 중복된 원소 제거
array = np.array([1, 1, 2, 3, 3, 3, 1])
print(np.unique(array))
[ 0. 2.5 5. 7.5 10. ]
[[4 9 6]
[3 3 7]]
[0 1 2 3 4 5 6 7 8 9]
[1 2 3]
추가) Axis 개념
이걸 줄기삼아, 필요한 세세한 부분은 열심히 구글링 해보자!
반응형
'인공지능공부' 카테고리의 다른 글
Linear Regression 바닥부터 구현하기 ( bias 없을때 ) (0) | 2023.07.14 |
---|---|
Matplotlib 에 대해 알아보자! (0) | 2023.07.07 |
Pandas 에 대해 알아보자 feat. Series, DataFrame (0) | 2023.07.07 |
OpenCV 에 대해 알아보자 (0) | 2023.07.07 |
활성화 함수가 필요한 이유는 무엇일까? (0) | 2022.01.16 |
Comments