Numpy
: C 언어로 구현된 파이썬 라이브러리 (배열 형태의 데이터를 다루기 위함)
import 구문을 통해 설치된 Numpy를 불러 사용 (아나콘다를 설치했다면 따로 설치할 필요 없음)
: import numpy as np
import numpy as np
# 정수형 데이터
data1 = [0,1,2,3,4,5,6,7,8]
a1 = np.array(data1)
a1
# array([0, 1, 2, 3, 4, 5, 6, 7, 8])
# 실수형 데이터
data2 = [0.1, 3, 5, 10, 0.25]
a2 = np.array(data2)
a2 # 모든 데이터 값이 실수 형태로 나타난다
# array([ 0.1 , 3. , 5. , 10. , 0.25])
- 배열(Array) : 순서가 있는 같은 종류의 데이터가 저장된 집합
a1.dtype # dtype('int32') : integer형, 32비트
a2.dtype # dtype('float64') : float형, 64비트
1) 시퀀스 데이터로부터 배열 생성
- 시퀀스 데이터를 인자로 받아 배열 객체를 생성
- 리스트와 튜플 타입의 데이터를 사용할 수 있으나 주로 리스트 데이터를 이용
np.array([0.5, 2, 6, 0.01]) # array([0.5 , 2. , 6. , 0.01])
np.array([[1,2,3], [4,5,6], [7,8,9]]) # 3x3 행렬
# array([[1, 2, 3],
# [4, 5, 6],
# [7, 8, 9]])
2) 범위를 지정해 배열 생성
- arrange() 를 이용하여 배열 생성
- 시작, 끝 범위를 지정하여 배열 생성 : arr_object = np.arange(start, stop, step)
1차원 배열
np.arange(0, 10, 2) # array([0, 2, 4, 6, 8]) :0부터 12미만인 수들이 2씩 증가하는 배열
np.arange(1, 10) # array([1, 2, 3, 4, 5, 6, 7, 8, 9]) : 1부터 10미만인 수들이 1씩 증가하는 배열
np.arange(5) # 미만값만 지정한 경우
# array([0, 1, 2, 3, 4])
2차원 배열
# 2차원 배열 (행렬) 형태
np.arange(12).reshape(4,3) # 0부터 12미만의 수의 4행 3열 행렬
# array([[ 0, 1, 2],
# [ 3, 4, 5],
# [ 6, 7, 8],
# [ 9, 10, 11]])
object 활용 : reshape()
b1 = np.arange(12).reshape(4,3)
b1.shape # (4, 3)
b2 = np.arange(5) # 0부터 5 미만의 1차원 벡터 생성
b2 # array([0, 1, 2, 3, 4])
b2.shape # (5, ) : b2의 구조
- 시작과 끝, 데이터의 개수를 지정하여 배열 생성 : arr_object = np.linspace(start, stop, num)
np.linspace(1, 10, 10) # 0부터 10이하의 수 10개
# array([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.])
np.linspace(0, np.pi, 20) # 0부터 pi값 이하의 수 20개
# array([0. , 0.16534698, 0.33069396, 0.49604095, 0.66138793,
# 0.82673491, 0.99208189, 1.15742887, 1.32277585, 1.48812284,
# 1.65346982, 1.8188168 , 1.98416378, 2.14951076, 2.31485774,
# 2.48020473, 2.64555171, 2.81089869, 2.97624567, 3.14159265])
3) 특별한 형태의 배열 생성
- zeros()와 ones()를 이용하여 0이나 1인 다차원 배열 생성
- 1차원 배열의 경우 n을, 다차원 배열인 경우 m x n 형태로 생성
zeros() 사용
np.zeros(10) # zeros() 사용하여 zero가 10개인 배열 생성
# array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
np.zeros((3,4)) # 0으로 구성된 3행 4열 행렬
# array([[0., 0., 0., 0.],
# [0., 0., 0., 0.],
# [0., 0., 0., 0.]])
ones() 사용
np.ones(10) # ones() 사용하여 1이 10개인 배열 생성
# array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
np.ones((3,3)) # 1로 구성된 3행 3열 행렬
# array([[1., 1., 1.],
# [1., 1., 1.],
# [1., 1., 1.]])
- 단위 행렬의 경우에는 eye()를 이용
np.eye(3) # 3행 3열 단위 행렬
# array([[1., 0., 0.],
# [0., 1., 0.],
# [0., 0., 1.]])
4) 배열의 데이터 타입 변환
- 데이터 타입 변환을 통해 문자의 배열 생성 : num_arr = str_arr.astype(dtype)
# 정수형이나 실수형으로 변환
str1 = np.array(['0.5', '0.24', '2', '3.14', '3.141592'])
num1 = str1.astype(float)
num1
# array([0.5 , 0.24 , 2. , 3.14 , 3.141592])
str1.dtype # dtype('<U8') : 유니코드
num1.dtype # dtype('float64') : 실수형
- 배열끼리 연산 가능하도록 하는 기호, 메서드
기호 | 내용 |
b | 불, bool |
i | 기호가 있는 정수 |
u | 기호가 없는 정수 |
f | 실수 |
c | 복소수 |
M | 날짜 |
O | 파이썬 객체 |
S 혹은 a | 바이트 문자열 |
U | 유니코드 |
5) 난수 배열의 생성
- random 모듈을 이용해 난수생성
np.random.rand(2,3) # 2행 3열 행렬 랜덤 생성
np.random.rand() # 하나의 값만 랜덤 생성
np.random.rand(4) # 4개의 원소를 가진 1차원 벡터 랜덤 생성
np.random.rand(2,3,4) # 3 x 4 행렬을 2개 랜덤 생성
# 정수형 배열 랜덤 생성
np.random.randint(10, size=(4,4)) # 10미만의 데이터를 4 x 4 행렬 랜덤 생성
np.random.randint(1,40) # 1부터 40 미만의 수 랜덤 생성
'abt Python > 심화' 카테고리의 다른 글
Matplotlib 그래프 (산점도, 막대그래프, 히스토그램, 파이그래프) (1) | 2023.08.21 |
---|---|
Matplotlib 기초 (0) | 2023.08.15 |
Pandas 데이터 (0) | 2023.08.15 |
Pandas 기초 (0) | 2023.08.14 |
Numpy 배열 연산, 인덱싱, 슬라이싱 (0) | 2023.08.14 |