Index
1. linspace, logspace 함수
1_ linspace
2_ logspace
2. NumPy random
1_ seed : 랜덤의 시작 값을 설정
2_ rand : 균등분포로 난수를 발생
3_ randn : 정규분포로 난수를 발생
4_ randint : 균등분포로 정수값을 발생
5_ suffle : 행렬 데이터를 섞어 줍니다.
6_ choice : 특정 확률로 데이터를 선택
1. linspace, logspace 함수
linspace와 logspace 특정 곡선을 그리듯 일정 간격으로 구성된 벡터값을 생성하기 위한 함수입니다.
- linspace : 설정한 범위에서 선형적으로 분할한 위치의 값을 출력합니다.
- logspace : 설정한 범위에서 로그로 분할한 위치의 값을 출력합니다.
1_ linspace
a와 b사이에 c개의 점을 생성하기 위한 명령어입니다.
만약에 c가 생략될 경우 → linspace(a, b) 100개의 일정한 등간격을 가진 행 벡터가 생성됩니다.
- 사용 방법 : np.linspace(a, b, c)
[코드예제]
np.linspace(0, 100, 5)
[결과]
array([ 0., 25., 50., 75., 100.])
2_ log space
a, b, c 을 log scale 등간격인 행 벡터를 생성하는 명령어입니다.
아례 예제처럼 log^a와 log^b 사이에 등간격인 c개의 행벡터를 생성합니다
만약에 c가 생략될 경우 → logspace(a, b) 50개의 일정한 등간격을 가진 행 벡터가 생성됩니다.
- 사용 방법 : np.logspace(a, b, c)
[코드예제]
# log10(x1)=2, log10(x2)=3, log10(x3)=4 만들기
np.logspace(2, 4, 3)
[결과]
array([ 100., 1000., 10000.])
2. NumPy random
데이터를 생성할 때 랜덤하게 섞거나 임의의 수를 발생시키는 NumPy의 random 서브 패키지로 제공됩니다.
서브 패키지이기 때문에 앞에 항상 np.random.을 써주어야 합니다.
1_ 시드값
- seed : 랜덤의 시작 값을 설정
2_ 난수 생성
- rand : 균등분포로 난수를 발생(0부터 1사이)
- randn : 정규분포로 난수를 발생 (가우시안의 표준 정규 분포)
- randint : 균등분포로 정수값을 발생 (균일 분포의 정수 난수)
3_ 데이터 순서바꾸기
- suffle : 행렬 데이터를 섞어 줍니다.
4_ 데이터 샘플링
- choice : 특정 확률로 데이터를 선택
1_ 시드 값 생성 : seed
: 처음 넘파이를 접하시는 분들은 seed 개념이 어려울 수 있는데 컴퓨터 프로그램에서 무작위 수는 "정말" 무작위가 아니라, 어떤 특정 시작 수를 정해주면 정해진 알고리즘에 따라 난수처럼 보이는 무작위 수열을 만들어줍니다.
이때 시작 수 "seed"라고 합니다.
특정한 시드값이 사용되면 다음에 만들어지는 난수들은 사실 모두 예측할 수는 있습니다.
[코드예제]
# seed는 객체를 바꾸어주는 함수이기 때문에 1 동일한 숫자를 넣었을 경우
# randint로 출력되는 값이 같다는 걸 알 수 있다.
np.random.seed(1)
result1 = np.random.randint(10, 100, 10)
np.random.seed(1)
result2 = np.random.randint(10, 100, 10)
np.random.seed(2)
result3 = np.random.randint(10, 100, 10)
result1, result2, result3
[결과]
(array([47, 22, 82, 19, 85, 15, 89, 74, 26, 11]),
array([47, 22, 82, 19, 85, 15, 89, 74, 26, 11]),
array([50, 25, 82, 32, 53, 92, 85, 17, 44, 59]))
2_ 난수 생성 rand, randn, randint
random의 서브 패키지 중에서 난수를 생성하는 3총사 입니다.
- rand : 균등분포로 난수를 발생(0부터 1사이)
- randn : 정규분포로 난수를 발생 (가우시안의 표준 정규 분포)
- randint : 균등분포로 정수값을 발생 (균등 분포의 정수 난수)
균등분포와 정규 분포가 헤깔리시는 분들을 위해 아래 그림으로 설명합니다
- rand
: 0에서 1사이 균일한 확률 분포로 실수와 난수를 만들어주는 서브 패키지 입니다.
괄호 안에 들어가는 숫자(인수)는 난수의 크기(n개)로 보시면 됩니다.
[코드예제]
np.random.rand(10)
array([0.20464863, 0.61927097, 0.29965467, 0.26682728, 0.62113383,
0.52914209, 0.13457995, 0.51357812, 0.18443987, 0.78533515])
- randn
: 표준편자가 1인 가우시안의 표준 정교 분포를 따른 난수 생성 패키지입니다.
[코드예제]
np.random.randn(10)
array([-0.0191305 , 1.17500122, -0.74787095, 0.00902525, -0.87810789,
-0.15643417, 0.25657045, -0.98877905, -0.33882197, -0.23618403])
- randint
: a에서 시작하여 b-1까지 난수를 발생시키며, 괄호 안은 행렬의 size를 말합니다.
사용법은
np.random.randint(a, b, (행, 열))
[코드예제]
r = np.random.randint(1, 10, (3, 4))
r
array([[2, 8, 9, 3],
[9, 8, 2, 7],
[9, 6, 4, 1]])
3_ 데이터 순서바꾸기
- suffle : 행렬 데이터를 섞어 줍니다.
[코드예제]
np.random.shuffle(r)
r
[결과]
array([[9, 6, 4, 1],
[9, 8, 2, 7],
[2, 8, 9, 3]])
4_ 데이터 샘플링 (data sampling)
- choice : 특정 확률로 데이터를 선택합니다.
- 사용법
: np.numpy.choice(a, size=None, replace=True, p=none)
- a : 배열이면 이미 있는 데이터로, 정수라면 arange(a) 함수 명령을 통해 데이터를 만듭니다.
- size : 샘플을 원하는 갯수
- replace : boolean 으로 true일 경우 선택되었더라 하더라도 데이터를 다시 선택할 수 있습니다.
- p : 각 데이터가 선택 될 수 있는 확률입니다 ( 주사위가 각 면이 나올 확률이 1/6인 것 처럼)
[코드예제]
np.random.choice(5, 10, p=[0.1, 0, 0.4, 0.2, 0.3])
[결과]
array([4, 3, 2, 4, 2, 4, 4, 3, 4, 4])
1. linspace, logspace 함수
1_ linspace
2_ logspace
2. NumPy random
1_ seed : 랜덤의 시작 값을 설정
2_ rand : 균등분포로 난수를 발생
3_ randn : 정규분포로 난수를 발생
4_ randint : 균등분포로 정수값을 발생
5_ suffle : 행렬 데이터를 섞어 줍니다.
6_ choice : 특정 확률로 데이터를 선택
'IT develop > CODING' 카테고리의 다른 글
Pandas 기초 1 - Series, DataFrame, apply (0) | 2021.03.08 |
---|---|
NumPy 기초 3 - 행렬 데이터의 결합, concatenate 함수 (0) | 2021.03.08 |
NumPy 기초 1 - numpy란, 행렬, 데이터선택, 브로드캐스팅(broad casting), 마스킹(masking) (0) | 2021.03.07 |
[Jupyter Notebook] space 번거로움을 자동적으로 바꾸어주는 auto pep8 설치 (0) | 2021.03.07 |
[Jupyter Notebook] 설정없이 바로 그래프 그리는 inline backend config (0) | 2021.03.07 |