[KT Aivle AI] 1주차. Numpy

hyowon·2024년 3월 19일
0

KtAivle

목록 보기
2/39

1. 개요

주제 : Numpy
내용 : Numpy에 대해 강의 기반 내가 헷갈렸던 부분 위주로 정리를 해보려고 한다.

2. Numpy

  • Numpy는 np.array 함수를 활용하여 배열을 생성한다.
  • Numpy는 하나의 데이터 type 만 배열에 넣을 수 있다. -> List와 가장 큰 차이점

1) 라이브러리 불러오기

✍ 입력

import numpy as np

2) 배열 만들기

  • np.array() 함수를 사용해서 배열을 만든다.

  • 대부분 리스트로부터 배열을 만들거나, 머신러닝 관련 함수 결과값이 배열이 된다.

  • 1차원 배열 만들기

✍ 입력

# 1차원 리스트
a1 = [1, 2, 3, 4, 5]

# 배열로 변환
b1 = np.array(a1)

# 확인
print(b1)

✍ 출력

[1 2 3 4 5]

✍ 입력

# 2차원 리스트
a2 = [[1.5, 2.5, 3.2],
      [4.2, 5.7, 6.4]]

# 배열로 변환
b2 = np.array(a2)

✍ 출력

print(b2)
[[1.5, 2.5, 3.2],
[4.2, 5.7, 6.4]]

3) 배열 인덱싱과 슬라이싱

(1) 인덱싱

배열[행, 열] 형태로 특정 위치의 요소를 조회합니다.

✍ 입력

# (3, 3) 형태의 2차원 배열 만들기
a = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]])

# 확인
print(a)

✍ 출력

[[1 2 3]
 [4 5 6]
 [7 8 9]]

1) 요소 조회
✍ 입력

# 첫 번째 행, 두 번째 열 요소 조회
print(a[0, 1])

✍ 출력

2

2) 행 조회

✍ 입력

# 첫 번째, 두 번째 행 조회
# print(a[[0, 1], :])
print(a[[0, 1]])

✍ 출력

[[1 2 3]
 [4 5 6]]

3) 열 조회

✍ 입력

# 첫 번째, 두 번째 열 조회
print(a[:, [0, 1]])

✍ 출력

[[1 2]
 [4 5]
 [7 8]]

4) 행, 열 조회
✍ 입력

# 두 번째 행 두 번째 열의 요소 조회
print(a[[1], [1]])

✍ 출력

[5]

(2) 슬라이싱(Slicing)

  • array[행1:행N, 열1:열N]의 형태로 지정해 그 위치의 요소를 조회
  • 조회 결과는 2차원 배열이 됨
  • 마지막 범위 값은 대상에 포함되지 않음

✍ 입력

# (3, 3) 형태의 2차원 배열 만들기
a = np.array([[1, 2, 3],
              [4, 5, 6], 
              [7, 8, 9]])

# 첫 번째 ~ 두 번째 행 조회
# print(a[0:2, :])
print(a[0:2])        

✍ 출력

[[1 2 3]
 [4 5 6]]

✍ 입력

# 첫 번째 ~ 세 번째 행, 두 번째 ~ 세 번째 열 조회
print(a[0:3, 1:3])

✍ 출력

[[2 3]
 [5 6]
 [8 9]]

(3) 조건 조회

  • 조건에 맞는 요소를 선택하는 방식이며, boolean index라고 부름
  • 조회 결과는 1차원 배열이 됨

✍ 입력

# 2차원 배열 만들기
score= np.array([[78, 91, 84, 89, 93, 65],
                 [82, 87, 96, 79, 91, 73]])

# 요소 중에서 90 이상인 것만 조회
print(score[score >= 90])

✍ 출력

[91 93 96 91]

✍ 입력

score >= 90

✍ 출력

array([[False,  True, False, False,  True, False],
       [False, False,  True, False,  True, False]])

4) 배열 연산

  • Numpy는 배열간의 기본적인 사칙 연산을 지원함(아래의 더하기와 같은 방식)

✍ 입력

# 두 개의 (2, 2) 형태의 2차원 배열 만들기
x = np.array([[1, 2], [3, 4]])
y = np.array([[5, 6], [7, 8]])

# 확인
print(x)
print(y)

✍ 출력

[[1 2]
 [3 4]]
[[5 6]
 [7 8]]

✍ 입력

# 배열 더하기
print(x + y)

✍ 출력

[[ 6  8]
 [10 12]]
[[ 6  8]
 [10 12]]

5) Comparisons

a = np.arange(10)

(1) np.where (까먹지 말기!)
np.where(조건문, True일때 값, False일 때 값)

a = np.array([1,3,2,7])

✍ 입력

# 조건
np.where(a > 2, 1, 0)

✍ 출력

array([0, 1, 0, 1])

(2) argmax & argmin
배열 내 최대값 또는 최소값의 index를 반환
axis 기반의 반환
axis = 0 : 행 방향 최대, 최소값의 index
axis = 1 : 열 방향 최대, 최소값의 index

a = np.array([1,2,4,5,8,78,23,3])
np.argmax(a), np.argmin(a)
(5, 0)

profile
안녕하세요. 꾸준히 기록하는 hyowon입니다.

0개의 댓글