파이썬 | Numpy

Jihun Kim·2021년 9월 3일
0

파이썬

목록 보기
4/11

🕹 Numpy

  • 대용량 데이터 처리에 용이하다.
  • python list에 대해 빠른 연산 지원하며 메모리를 효율적으로 사용한다.

배열 만들기 🧘‍♀️

import numpy as np

# 1차원
np.array([1, 2, 3, 4, 5])  # array([1, 2, 3, 4, 5])

# 2차원
np.array([[1, 2],
		  [3, 4]])
          
# type 지정
np.array([1, 2, 3, 4, 5], dtype="float")  
# array([1., 2., 3., 4., 5.])

배열 데이터 타입 'dtype'

  • array는 단일 타입으로 구성된다.
arr.dtype   # 타입 확인하기
arr.astype(int)   # 타입 변경하기

다양한 배열 만들기

np.zeros(10, dtype=int)
# array([0, 0, 0, ..., 0])

np.ones((3, 5), dtype=float)
# array([[1., 1., 1., 1., 1.,],
			...
		 [1., 1., 1., 1., 1.,]])
         
np.arange(0, 20, 2)  # (start, end, step)

np.linspace(0, 1, 5)  # 0~1 사이를 5개로 나누어 만들기
# array([0, 0.25, 0.5, 0.75, 1])

난수로 채워진 배열 만들기

np.random.random((2, 2))   # 2 by 2의 난수

# 정규 분포로 데이터 추출
np.random.normal(0, 1, (2, 2))  # (평균, 표준편차, 행렬 크기)

# 정수로 된 난수
np.random.randint(0, 10, (2, 2)) 

배열의 크기, 차원

x1 = np.random.randint(10, size=(3, 4))

# array([[6, 0, 5, 0],
         [8, 9, 7, 2],
        [4, 0, 2, 9]])
       
x2.ndim   # 2
x2.shape   # (3, 4)
x2.size   # 12
x2.dtype   # dtype('int64')

찾고 잘라내기

x = np.arange(7)

x[::2]  # 2씩 건너뛴 값만 출력
# [0, 2, 4, 6]
# 1~15의 3 by 5 행렬
matrix = np.arange(1, 16).reshape(3,5) 

# matrix의 (2,3) 인덱스의 요소를 출력
print(matrix[2, 3])

# matrix의 행은 인덱스 0부터 인덱스 1까지, 열은 인덱스 1부터 인덱스 3까지 출력
print(matrix[0:2, 1:4])

배열의 모양 바꾸기 ✂

1. reshape

x = np.arange(8)

x.shape  # (8,)

x2 = x.reshape((2, 4))
# array([[0, 1, 2, 3],
		 [4, 5, 6, 7]])

2. concatenate

x = np.array([0, 1, 2])
y = np.array([3, 4, 5)

np.concatenate([x, y])
# array([0, 1, 2, 3, 4, 5])

# 축을 기준으로 이어 붙이기
np.concatenate([matrix, matrix], axis=0)  # 행 기준
np.concatenate([matrix, matrix], axis=1)  # 열 기준

3. split

# split(나눌 대상, 어디를 나눌지, 방향)
# 3행 위쪽은 upper, 아래쪽은 lower로 들어가게 된다.
upper, lower = np.split(matrix, [3], axis=0)

left, right = np.split(matrix, [3], axis=1)

numpy 연산 🔑

  • 원소에 연산을 하고 싶을 때 반복문을 돌리지 않고 아래와 같이 array에 직접 연산을 하면 된다
x = np.arange(4)
# array([0, 1, 2, 3])

x + 5  # array([5, 6, 7, 8])

x - 5

x * 5

x / 5
  • 다차원 행렬에서도 적용 가능

브로드캐스팅

  • Broadcasting: shape이 다른 array끼리 연산할 수 있다.
    👉 차원이 같아지도록 행 또는 열을 늘려서 계산한다고 보면 된다.
# matrix는 3 by 3 행렬
# matrix의 각 행에 대해 [1, 2, 3] 행을 더하게 된다.
matrix + np.array([1, 2, 3])  

집계함수 & 마스킹 연산

1. 집계함수

  • 집계 : 데이터에 대한 요약 통계
x = np.arange(8).reshape((2, 4))
np.sum(x)
np.min(x)
np.max(x)
np.mean(x)
np.std(x)  # 표준편차

# 축을 기준으로한 집계
np.sum(x, axis=0)
np.sum(x, axis=1)

2. 마스킹 연산

  • 마스킹 연산 : True, False array 통해 특정 값들을 뽑아내는 방법
x = np.arange(5)

x < 3
# array([True, True, True, False, False])

x > 5

x[x < 3]   # x < 3인 원소들만 출력
# array([0, 1, 2])

🐧 이 글은 엘리스 AI 트랙 과정 중 '실전 데이터 분석' 강의 내용을 바탕으로 작성 되었습니다.

profile
쿄쿄

0개의 댓글