[머신러닝 완벽 가이드] 1장_Numpy

이경민·2022년 12월 30일
0

✅ numpy.ndarray

# numpy 불러오기
import numpy as np
  • np.array(): 입력된 객체를 ndarray로 변환
  • ndarray.shape: 차원과 크기를 (row, col) 튜플 형태로 반환 (단 1차원은 (개수,))
  • ndarray.ndim: 차원
  • ndarray.dtype: 데이터 타입 (1가지만 올 수 있음)
  • ndarray.astype(): 데이터 타입 변경
#예시 코드
array_int = np.array([1, 2, 3])
array_float = array_int.astype('float64')
print(array_float, array_float.dtype) # [1. 2. 3.] float64 

✅ ndarray 생성

  • np.arange(): range()와 비슷
#예시 코드
sequence_array = np.arange(10)
print(sequence_array) # [0 1 2 3 4 5 6 7 8 9]
  • np.zeros(): 모든 값을 0으로 채운 ndarray 반환
  • np.ones(): 모든 값을 1로 채운 ndarray 반환
#예시 코드
zero_array = np.zeros((3,2),dtype='int32')
print(zero_array) # [[0 0]
                  #  [0 0]
                  #  [0 0]]

✅ ndarray 변경

  • ndarray.reshape(): ndarray를 특정 차원 및 크기로 변환
  • reshape(row, col)에서 -1 인자 사용 -> 호환 가능한 형태로 변환
  • reshape(-1, 1): 2차원 형태로 변환
#예시 코드
array1 = np.arange(10)
array2 = array1.reshape(-1,5) # 5열 -> 2행
print('array2 shape:',array2.shape) # (2, 5)

✅ 인덱싱

  • 특정 데이터 [], [,]

  • 슬라이싱 [:], [start:end, ...] -> (start) ~ (end-1)
    ** 2차원에서 인덱스 하나만 지칭할 경우, row 기준으로 반환

  • 팬시 인덱싱: 리스트로 위치 지정

  • 불린 인덱싱: 조건에 대해 True인 인덱스 값만 저장하여 조회

#예시 코드
array1d = np.arange(start=1, stop=10)
array3 = array1d[array1d > 5]
print('array1d > 5 불린 인덱싱 결과 값 :', array3) # [6 7 8 9]

✅ 행렬

1. 정렬

  • np.sort(): 원본 변경 X
  • ndarray.sort(): 원본 변경 O, 반환 None
  • 내림차순 정렬 -> np.sort()[::-1]
  • 2차원 이상일 경우 -> row: axis=0 (|방향), col: axis=1 (-방향)
  • np.argsort(): 행렬 정렬 시 원본 행렬의 인덱스 반환
#예시 코드
name_array = np.array(['John', 'Mike', 'Sarah', 'Kate', 'Samuel'])
score_array= np.array([78, 95, 84, 98, 88])
sort_indices_asc = np.argsort(score_array)
print('성적 오름차순 정렬 시 score_array의 인덱스:', sort_indices_asc) 
# [0 2 4 1 3]
print('성적 오름차순으로 name_array의 이름 출력:', name_array[sort_indices_asc]) # 팬시 인덱스 적용
# ['John' 'Sarah' 'Samuel' 'Mike' 'Kate']

2. 연산

  • np.dot(A, B): 행렬 내적(A, B 행렬 곱)
  • np.transpose(A): 전치행렬, 행과 열의 위치 교환
profile
열정 가득한 공간

0개의 댓글