이수안컴퓨터연구소의 NumPy 한번에 끝내기 영상을 보고 정리한 내용입니다.
✅ 생성한 값으로 배열 생성
✔️ numpy.arange()
주어진 start와 end의 사이를 일정한 간격으로 값을 생성, 배열을 반환한다.
python의 range 함수를 배열을 생성하는데 사용하는 것과 비슷하다.
numpy.arange([start, ]stop, [step, ]dtype=None, *, like=None)
- start : 정수 혹은 실수. 지정할 범위의 시작값. 기본값은 0.
- stop : 정수 혹은 실수. 지정할 범위의 끝값. end로 지정된 수는 포함하지 않음.
- step : 옵션. 저장할 데이터의 간격
import numpy as np
print(np.arange(0, 30, 2))
# output
# [ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28]
✔️ numpy.linspace()
start와 stop으로 지정된 범위 내에서 균등한 간격으로 값을 생성, 배열을 반환한다.
설명을 보면 arange와 비슷해 보이지만 다르다.
linspace는 start와 end 사이의 수를 num의 수만큼 일정한 간격으로 쪼갠 후 그 값을 배열로 반환한다.
쉽게 말하자면 start와 end 사이를 num개로 나눠줘! 하는 것이다.
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)
- start : array_like, 지정할 범위의 시작값.
- stop : array_like, 지정할 범위의 끝값.
- num : 옵션. 양수인 정수. 생성할 요소의 수. 기본값은 50.
print(np.linspace(0, 1, 5))
# output
# [0. , 0.25, 0.5 , 0.75, 1. ]
✔️ numpy.logspace()
지정한 범위 내에서 일정한 간격으로 로그 스케일 값을 생성, 배열을 반환한다.
numpy.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None, axis=0)
- start : array_like, 지정할 범위의 시작값.
- stop : array_like, 지정할 범위의 끝값.
- num : 옵션. 양수인 정수. 생성할 요소의 수. 기본값은 50.
print(np.logspace(0, 1, 5))
# output
# [ 1. , 1.77827941, 3.16227766, 5.62341325, 10. ]
✅ 랜덤 값으로 배열 생성
✔️ numpy.random.random()
랜덤한 수의 배열을 생성한다.
random.random(size=None)
- size : 생성할 배열의 shape.
print(np.random.random((3, 3)))
# output
# [[0.74305834, 0.97830609, 0.92824401],
# [0.27896452, 0.78819572, 0.99946302],
# [0.64495721, 0.16775942, 0.57493329]]
✔️ numpy.random.randint()
일정한 범위 내의 랜덤한 정수로 배열을 생성한다.
random.randint(low, high=None, size=None, dtype=int)
- low : 정수 혹은 정수로 이루어진 array-like. 지정할 숫자 범위의 시작값.
- high : 옵션. 정수 혹은 정수로 이루어진 array-like. 지정할 숫자 범위의 끝값. 이 값은 포함되지 않음.
- size : 옵션. 생성할 배열의 shape.
print(np.random.randint(0, 10, (3, 3)))
# output
# [[6, 7, 3],
# [3, 4, 7],
# [2, 5, 3]]
✔️ numpy.random.normal()
정규분포(normal distribution)를 고려한 랜덤한 수의 배열을 생성한다.
random.normal(loc=0.0, scale=1.0, size=None)
- loc : 실수. 평균
- scale : 실수. 표준편차
- size : 옵션. 생성할 배열의 shape.
print(np.random.normal(0, 1, (3, 3)))
# output
# [[-0.09231777, -0.03241674, 0.3284639 ],
# [-1.71014268, 1.12939519, -1.13508392],
# [-1.26713935, 0.85833702, -1.28378148]]
✔️ numpy.random.rand()
균등분포(uniform distribution)를 고려한 랜덤한 수의 배열을 생성한다.
random.rand(d0, d1, ..., dn)
- d0, d1, ..., dn : 정수. 생성할 배열의 shape
print(np.random.rand(3, 3))
# output
# [[0.16525311, 0.40986145, 0.87129066],
# [0.15067537, 0.65140871, 0.03270559],
# [0.63553074, 0.37254499, 0.94640418]]
✔️ numpy.random.randn()
표준 정규 분포(standard normal distribution)를 고려한 랜덤한 수의 배열을 생성한다.
random.randn(d0, d1, ..., dn)
- d0, d1, ..., dn : 정수. 생성할 배열의 shape
print(np.random.randn(3, 3))
# output
# [[-0.33745667, -0.57266985, 1.26624118],
# [-0.03559563, -0.32379406, -0.29068972],
# [-1.11636966, 0.45029291, -0.87915135]]
✅ 날짜/시간 배열 생성
NumPy는 날짜, 시간을 계산 가능한 형태로 다룰 수 있다.
날짜, 시간을 값으로 저장할 때에는 문자열 형식을 이용하며 날짜 단위는 년(Y), 월(M), 주(W), 일(D), 시간 단위는 시간(h), 분(m), 초(s), 밀리초(ms) 등이 있다.
날짜, 시간 데이터의 자료형은 datetime64이다.
date = np.array('2022-01-23', dtype=np.datetime64)
print(date)
# output
# 2022-01-23
print(date + np.arange(12))
# output
# ['2022-01-23' '2022-01-24' '2022-01-25' '2022-01-26' '2022-01-27'
# '2022-01-28' '2022-01-29' '2022-01-30' '2022-01-31' '2022-02-01'
# '2022-02-02' '2022-02-03']
datetime = np.datetime64('2022-01-23 13:03')
print(datetime)
# output
# 2022-01-23T13:03
datetime = np.datetime64('2022-01-23 13:03:12.34', 'ns')
print(datetime)
# output
# 2022-01-23T13:03:12.340000000
✅ 표준 데이터 타입
NumPy의 데이터 타입은 NPY_BOOL, NPY_INT, NPY_INT64, NPY_UINT64, NPY_FLOAT 등으로 다양하게 존재한다.
이러한 데이터 타입을 이용해 해당하는 타입의 배열을 생성할 수 있다.
print(np.zeros(20, dtype=int))
# output
# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
print(np.ones((3, 3), dtype=bool))
# output
# [[ True, True, True],
# [ True, True, True],
# [ True, True, True]]
print(np.full((3, 3), 1.0, dtype=float))
# output
# [[1., 1., 1.],
# [1., 1., 1.],
# [1., 1., 1.]]
🔍 참조
Array creation routines https://numpy.org/doc/stable/reference/routines.array-creation.html
Random sampling https://numpy.org/doc/stable/reference/random/index.html
Datetimes and Timedeltas https://numpy.org/doc/stable/reference/arrays.datetime.html
Data Type API https://numpy.org/doc/stable/reference/c-api/dtype.html
'Python > NumPy' 카테고리의 다른 글
[NumPy] 배열 변환 - (1) (0) | 2022.01.24 |
---|---|
[NumPy] 배열 값 삽입/수정/삭제/복사 (0) | 2022.01.24 |
[NumPy] 인덱싱과 슬라이싱 (0) | 2022.01.23 |
[NumPy] 배열 생성 - (1) (0) | 2022.01.22 |
[NumPy] NumPy의 정의와 특징 (0) | 2022.01.22 |
댓글