[Numpy] ndarray를 Random하게
5가지 형태로 랜덤하게 ndarray를 생성할 수 있어요!
np.random.normal()
: 정규분포 확률밀도함수에서 실수 표본을 추출해서 ndarray를 생성하며 정규분포 그래프를 평균,표준편차 필요
mean = 50
std = 2
arr = np.random.normal(mean,std,(100000,))
print(arr)
plt.hist(arr,bins=1000)
plt.show() # 출력 결과 01
출력 결과 01
[48.08026042 50.64705142 50.89328134 … 50.29764312 49.10224386 49.97381904]
np.random.rand(d1,d2,d3,...)
: 0 이상 1미만의 균등분포 확률밀도함수에서 실수 표본을 추출해서 ndarray를 생성
arr = np.random.rand(100000)
print(arr)
plt.hist(arr,bins=100)
plt.show() # 출력 결과 02
출력 결과 02
[0.28523578 0.55571099 0.83913149 … 0.8335679 0.61201189 0.92283897]
np.random.randn()
: 표준 정규분포상에서 실수 표본을 추출해서 ndarray를 생성, 평균이 0이고 표준편차가 1인 정규분포를 표준정규분포
arr = np.random.randn(100000)
print(arr)
plt.hist(arr,bins=100)
plt.show() # 출력 결과 03
출력 결과 03
[-1.65893962 0.83696072 -0.74883022 … 2.84925579 0.02987112 0.89703998]
np.random.randint(low, high, shape)
: 최소값과 최대값 사이에서 정해진 shape으로 난수를 추출해서 ndarray를 생성, 균등분포를 이용해서 난수 추출
arr = np.random.randint(-100, 100, (100000,))
print(arr)
plt.hist(arr,bins=100)
plt.show() # 출력 결과 04
출력 결과 04
[-22 40 51 … -17 -32 66]
np.random.random(shape)
: 0이상 1미만의 균등분포에서 실수 난수를 추출해서 ndarray를 생성
arr = np.random.random((100000,))
print(arr)
plt.hist(arr,bins=100)
plt.show() # 출력 결과 05
출력 결과 05
[0.55844588 0.75907513 0.62556412 … 0.56736381 0.46927807 0.85982802]
정리. random값을 이용해서 ndarray를 생성하는 방법!!#
- python의 list를 이용해서 ndarray생성 => np.array()
- np.ones(), np.zeros(), np.full(), np.empty(), np.ones_like()
- np.arange()
- np.linspace()
- np.random.~~() 랜덤값으로 ndarray를 생성하는 5가지 함수
Numpy 난수 관련 함수#
난수의 재현성을 확보해보아요!
- 랜덤값(난수) : 컴퓨터의 난수는 알고리즘에 근거해요. 초기값(
seed
)을 이용해서 특정 알고리즘을 수행시켜서 난수값을 도출
import numpy as np
np.random.seed(3) # seed 설정
arr = np.random.randint(0,100,(5,))
print(arr)
데이터의 순서를 바꾸려면?? shuffle()
#
shuffle()을 사용하면 ndarray의 원본이 바뀌게 된다.
arr = np.arange(0,10,2)
print(arr)
np.random.shuffle(arr)
print(arr)
Data set에서 일부를 무작위로 sampling을 수행 choice()
#
# numpy.random.choice(a, size, replace, p)
# a : ndarray, 혹은 정수가 나오면 arange()를 수행한 결과
# size : sample 개수
# replace=True : 한번 뽑은걸 다시 뽑을 수 있어요!
# ndarray => p=[0.1, 0.3, 0, 0.1, 0.1, 0.35, 0.05]
arr = np.array([1,2,3,4,5,6,7])
print(arr)
arr = np.arange(5)
result = np.random.choice(arr,3, replace=False, p=[0.1, 0.3, 0, 0.1, 0.1, 0.35, 0.05])
print(result)