본문 바로가기

머신러닝

03. Numpy

[공부 자료 : Must Have 데싸노트의 실전에서 통하는 머신러닝]

# Numpy

- Numpy 기초

배열 (array)

      1차원 배열 : 리스트, 튜플 형태

      2차원 배열 : 행과 열

import numpy as np

# 1차원 배열
np.array([1, 2, 3])
# array([1, 2, 3])

# 2차원 배열
np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# array([[1, 2, 3],
#        [4, 5, 6],
#        [7, 8, 9]])
import pandas as pd

file_url = 'https://media.githubusercontent.com/media/musthave-ML10/data_source/main/sample.csv'
sample = pd.read_csv(file_url)

sample # DataFrame
# 	Var_1	Var_2
# 0	1	2
# 1	3	4
# 2	2	5
# 3	5	6
# 4	3	2
# 5	1	1
# 6	2	6
# 7	5	7
# 8	6	8
# 9	7	4
# 10	7	7
# 11	8	3
# 12	9	7
# 13	3	9
# 14	2	2
# 15	1	3
# 16	2	6
# 17	2	4
# 18	3	3

np.aarray( ) : DataFrame → Array

# DataFrame -> Array
sample_np = np.array(sample)
sample_np
# array([[1, 2],
#        [3, 4],
#        [2, 5],
#        [5, 6],
#        [3, 2],
#        [1, 1],
#        [2, 6],
#        [5, 7],
#        [6, 8],
#        [7, 4],
#        [7, 7],
#        [8, 3],
#        [9, 7],
#        [3, 9],
#        [2, 2],
#        [1, 3],
#        [2, 6],
#        [2, 4],
#        [3, 3]])

pd.DataFrame( ) : Array → DataFrame

sample_df = pd.DataFrame(sample_np)
sample_df # DataFrame -> Array 과정에서 col 명이 날라감
#	0	1
# 0	1	2
# 1	3	4
# 2	2	5
# 3	5	6
# 4	3	2
# 5	1	1
# 6	2	6
# 7	5	7
# 8	6	8
# 9	7	4
# 10	7	7
# 11	8	3
# 12	9	7
# 13	3	9
# 14	2	2
# 15	1	3
# 16	2	6
# 17	2	4
# 18	3	3

- Numpy 다루기

Array[ ] : 인덱싱

sample_np = np.array([[2, 2, 1, 4, 3], [4, 4, 3, 7, 1], [2, 4, 1, 2, 3], [1, 5, 3, 6, 2]])
sample_np
# array([[2, 2, 1, 4, 3],
#        [4, 4, 3, 7, 1],
#        [2, 4, 1, 2, 3],
#        [1, 5, 3, 6, 2]])

sample_np[0] # 0번 row
# array([2, 2, 1, 4, 3])

sample_np[0, 2] # 0번 row, 2번 col
# 1

sample_np[0:3, 2:4] # 0 ~ 2번 row, 2 ~ 3번 col
# array([[1, 4],
#        [3, 7],
#        [1, 2]])

sample_np[:, 2] # 모든 row, 2번 col
# array([1, 3, 1, 3])

배열의 사칙 연산

np_a = np.array([[1, 3], [0, -2]])
np_a
# array([[ 1,  3],
#        [ 0, -2]])

np_a + 10
# array([[11, 13],
#        [10,  8]])

np_a * 2
# array([[ 2,  6],
#        [ 0, -4]])

배열과 배열의 연산

np_a = np.array([[1, 3], [0, -2]])
np_a
# array([[ 1,  3],
#        [ 0, -2]])

np_b = np.array([[1, 0], [0, 1]])
np_b
# array([[1, 0],
#        [0, 1]])

np_a + np_b
# array([[ 2,  3],
#        [ 0, -1]])

np_a * np_b # 같은 위치의 요소끼리 단순 곱
# array([[ 1,  0],
#        [ 0, -2]])

np_a @ np_b # 내적
# array([[ 1,  3],
#        [ 0, -2]])

# Numpy 기능

- Numpy.Random 모듈

random.randint( ) : 임의의 정수 하나를 뽑는다

np.random.randint(11) # 0이상 11미만
np.random.randint(50, 71) # 50이상 71미만
np.random.randint(50, 71, 5) # 50이상 71미만, 5개

random.choice(list, size = n) : 주어진 list에서 n개를 뽑기

np.random.choice(['red', 'green', 'white', 'black', 'blue'], size = 3)
# array(['green', 'white', 'black'], dtype='<U5')

np.random.choice(['red', 'green', 'white', 'black', 'blue'], size = 3, replace = False) # 중복 추출 방지
# array(['white', 'blue', 'red'], dtype='<U5')

- Numpy 함수

arange( ) : 일련의 정수 배열 만들기

np.arange(1, 11) # 1이상 11미만
# array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10])

np.arange(1, 11, 2) # 1이상 11미만 2씩 증가
# array([1, 3, 5, 7, 9])

linspace( ) : 균등하게 나눠진 배열 만들기

np.linspace(1, 10, 4) # 1이상 10이하, 균일하게 4개
# array([ 1.,  4.,  7., 10.])