• Numpy 패키지
- C언어롤 구현된 파이썬 라이브러리
- 고성능의 수치계산을 위해 제작 (난수생성 가능, 선형대수 가능)
- Numerical Python의 줄임말로, 벡터 및 행렬 연산에 있어 매우 편리한 기능을 제공
- array라는 단위로 데이터를 관리, 및 연산
- 각 열의 데이터 타입이 동일해야 함
• Array 구조
- 스칼라 (Scalar) : 하나의 숫자로 이루어진 데이터
- 벡터 (Vector) : 여러개의 숫자들을 특정한 순서대로 모아놓은 데이터 모음 / 1D Array (1차원 배열)
- 행렬 (Matrix) : 벡터들을 모아놓은 데이터 집합 / 2D Array (2차원 배열)
- 텐서 (Tensor) : 같은 크기의 행렬들을 모아놓은 데이터 집합 / ND Array (다차원 배열)
• Numpy 패키지 사용법
import numpy as np #numpy를 np라는 별칭으로 사용
• Array 구조
- np.array
data1 = [1,2,3,4,5]
data1
[1,2,3,4,5] # list 구조
arr1 = np.array(data1)
arr1
array([1,2,3,4,5]) #list가 이제 array로 들어감
type(data1)
list
type(arr1)
array
- ndim : 축의 개수
arr1.ndim #1차원 배열
1
- shape : array의 크기 및 형태
arr1.shape
(5, )
- dtype : 데이터유형 확인
arr1.dtype
dtype('int64')
arr2 = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
arr2
array([[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[10, 11, 12]])
arr2.ndim
2
arr2.shape
( 4, 3)
• Array 연산
- 기본적으로 numpy에서 연산을 할때는 크기가 서로 동일한 array끼리 연산이 진행.
- 같은 위치에 있는 요소들끼리 연산이 진행.
arr1 = np.array([[1,2,3],[4,5,6]])
arr1
array([1, 2, 3],
[4, 5, 6])
arr1.shape
( 2, 3)
arr2 = np.array([[10,11,12],[13,14,15]])
arr2
array([10, 11, 12],
[13, 14, 15])
arr2.shape
( 2, 3)
arr1 + arr2
array([11, 13, 15],
[17, 19, 21])
arr1 - arr2
array([-9, -9, -9],
[-9, -9, -9])
arr1 * arr2
array([10, 22, 36],
[52, 70, 90])
• Array의 브로드캐스트
- 브로드캐스트란 서로 크기가 다른 array가 연산이 가능하게끔 하는 것
arr3 = np.array([10,11,12])
arr3
array([10, 11, 12])
arr1 + arr3
array([[11, 13, 15],
[14, 16, 18]])
arr1 * arr3
array([[10, 22, 36],
[40, 55, 72]])
- 연산 결과를 살펴보면 arr3이 [10,11,12]에서 [[10,11,12],[10,11,12]]로 확장되어 계산되었음을 알 수 있음.
- array 형태끼리 뿐만 아니라 스칼라도 연산이 가능
arr1 * 10
array([[10, 20, 30],
[40, 50, 160]])
• random 모듈
함수 | 내용 |
np.random.seed | Seed를 통한 난수 생성 |
np.random.rand | 균일 분포의 정수 난수 1개 생성 |
np.random.randint | 0~1 사이의 균일 분포에서 난수 생성 |
np.random.randn | 가우시안 표준 정규분포에서 난수 생성 |
np.random.shuffle | 기존의 데이터 순서 바꾸기 |
np.random.choice | 기존의 데이터에서 샘플링 |
np.unique | 데이터에서 중복된 값 제거 |
- np.random.randint()
np.random.randint(6) # 0-5사이의 숫자 랜덤추출
np.random.randint(1,20) # 1-19사이의 숫자 랜덤추출
np.random.randint(1,20,size=10)
- np.random.rand(): 0~1의 균일분포
np.random.rand(6)
- np.random.rand(): 0~1의 균일분포
- np.random.randn(): 평균 0, 표준편차 1인 표준정규분포에서 랜덤 추출
- np.random.seed(): 동일한 랜덤추출된 숫자를 사용
- np.random.suffle(): 데이터 순서를 랜덤하게 바꿈
- np.random.choice(): 기존 데이터에서 랜덤하게 추출
- np.unique(): 중복제거
'Studying > Data Analysis' 카테고리의 다른 글
데이터 분석 (0) | 2022.12.06 |
---|