Python/Numpy
Numpy_02
BSHwan
2019. 8. 11. 17:15
반응형
random 모듈¶
- 외부 모듈 : import random
- random.random(): 0 부터 1 사이의 부동소수점(float) 숫자를 리턴한다
- random.randint(최소, 최대) : 입력 파라미터인 최소부터 최대까지 중 임의의 정수를 리턴한다
- random.randrange(시작,끝[,간격]) : 입력 파라미터인 시작부터 끝값까지 (지정된 간격으로 나열된) 숫자 중 임의의 정수를 리턴한다
- random.uniform(최소, 최대) : 입력 파라미터인 최소부터 최대까지 중 임의의 부동소수점(float) 숫자를 리턴한다
In [1]:
import random
In [5]:
# 0~1 사이 1개 실수형 난수
random.random()
Out[5]:
In [6]:
random.random()
Out[6]:
In [8]:
# 1~5 사이 1개 정수형 난수
random.randint(1,6)
Out[8]:
In [11]:
random.randint(1,6)
Out[11]:
In [20]:
# 2부터 100 사이의 임의의 짝수
random.randrange(2, 101, 2)
Out[20]:
In [22]:
random.randrange(1, 101, 2)
Out[22]:
In [24]:
# 지정된 범위에서 실수형 난수 발생
random.uniform(-1,-2)
Out[24]:
In [27]:
random.uniform(-1,-2)
Out[27]:
random.choice() 알아보기¶
- random.choice?
- random.choice(리스트) : 리스트에서 임의의 원소 1개 출력
In [28]:
# 간단한 문법 레퍼런스 창 보기
random.choice?
In [32]:
random.choice(['철수','영희','로미오','줄리엣','지니'])
Out[32]:
In [384]:
random.choice(['철수','영희','로미오','줄리엣','지니'])
Out[384]:
random.sample() 알아보기¶
- random.sample?
- random.sample(집합형자료, 갯수) : 리스트에서 임의의 원소 출력
In [33]:
random.sample?
In [36]:
# 숫자리스트 샘플링
numlist = [1,2,3,4,5,6,7,8,9]
random.sample(numlist, 3)
Out[36]:
In [41]:
# 튜플 샘플링
frutes = ('사과', '귤', '포도', '배')
random.sample(frutes, 2)
Out[41]:
In [ ]:
In [ ]:
Numpy 모듈 임포트¶
In [42]:
import numpy as np
Numpy 배열의 난수값 지정하기¶
- np.random.rand(갯수)
- np.random.rand(행수,열수)
- 0부터 1사이에서 실수 난수를 생성
In [44]:
np.random.rand(5)
Out[44]:
In [43]:
np.random.rand(2,3)
Out[43]:
Numpy 배열의 난수값 지정하기 : randn()¶
- np.random.randn(갯수)
- np.random.randn(행수,열수)
- 기댓값이 0이고 표준편차가 1인 가우시안 표준 정규 분포를 따르는 난수를 생성
In [33]:
np.random.randn(5)
Out[33]:
In [34]:
np.random.randn(2,3)
Out[34]:
Numpy 배열의 난수값 지정하기 : randint()¶
- np.random.randint(low, high, size=갯수) : 1차
- np.random.randint(low, high, size=(행,열)) : 2차
- high를 입력하지 않으면 0과 low사이의 숫자, high를 입력하면 low와 high는 사이의 숫자를 출력한다.
- 음수부터 양수까지고 지정 가능하다
- size는 난수의 숫자이다.
- 정수형 0포함 양수 난수를 생성할 때 사용한다.
In [82]:
# 0~9
np.random.randint(10)
Out[82]:
In [136]:
# 1~5
np.random.randint(1,6)
Out[136]:
In [117]:
# 1~9 난수 3개
np.random.randint(1,10, size=3)
Out[117]:
In [139]:
# 음수 ~ 양수로 범위 확장
np.random.randint(-10,11,size=5)
Out[139]:
In [120]:
# 10~19 난수 3행 5열 구성
np.random.randint(10, 20, size=(3, 5))
Out[120]:
np.random.seed()¶
- 한번 발생한 난수를 다시 표시할 때 사용 => 시드 메모리에 기억
- np.random.seed(숫자)
- 숫자는 0~양의 정수
- np.random.seed(숫자)로 시드 지정 후 난수 생성
- 난수 호출때에도 다시 np.random.seed(숫자)로 시드 지정 후 난수 생성
In [48]:
# np.random.seed() : 시드 0으로 설정
np.random.seed(1)
np.random.rand(10)
Out[48]:
In [46]:
# 시드를 호출하지 않은 경우 => 새로운 난수 생성
np.random.rand(10)
Out[46]:
In [49]:
# 시드 호출
# 위의 시드 0 지정후의 난수값과 같은지 확인
np.random.seed(1)
np.random.rand(10)
Out[49]:
In [50]:
# 시드 123으로 설정 후 정수난수 생성
np.random.seed(123)
np.random.randint(10)
Out[50]:
In [57]:
np.random.randint(10)
Out[57]:
In [61]:
# 위의 시드 123 지정후의 난수값과 같은지 확인
np.random.seed(123)
np.random.randint(10)
Out[61]:
In [62]:
# 시드 54321 로 설정 후 난수 생성
np.random.seed(54321)
np.random.randn(3,3)
Out[62]:
In [63]:
np.random.randn(3,3)
Out[63]:
In [64]:
# 위의 시드 54321 지정후의 난수값과 같은지 확인
np.random.seed(54321)
np.random.randn(3,3)
Out[64]:
np.random.choice()¶
- 리스트에서 무작위로 n개의 데이터를 추출할 때 사용한다.
- np.random.choice(데이타형은숫자/리스트, size=샘플숫자, replace=True/False, p=리스트)
- 데이타형이 리스트이면 데이터, 정수이면 arange(a) 명령으로 데이터를 생성한다.
- size : 정수. 샘플 숫자
- replace : 불리언. True이면 한번 선택한 데이터를 다시 선택 가능하다. 중복허용
- p : 리스트형태. 각 데이터가 선택될 수 있는 확률로 소숫점 단위로 지정
In [244]:
# 0~10사이의 숫자중에서 4개를 중복허용으로 생성
np.random.choice(11, size=4, replace=True)
Out[244]:
In [241]:
np.random.choice(11, size=4, replace=True)
Out[241]:
In [65]:
# 리스트에서 3개를 중복을 허용하지 않고 생성
np.random.choice(['사자','코끼리','펭귄',
'물소','기린','얼룩말','토끼'],
size=3, replace=False)
Out[65]:
In [72]:
# 리스트에서 3개를 중복을 허용하지 않고 생성
np.random.choice(['사자','코끼리','펭귄',
'물소','기린','얼룩말','토끼'],
size=3, replace=False)
Out[72]:
In [93]:
# 선택 확률을 다르게 해서 2개 선택
# 0~4 범위에서 0,1,2,3,4 숫자중 2개 선택
# p 는 아이템의 갯수만큼 리스트로 구성
# p의 값은 0~1 소숫점으로 표시 . p전체의 합은 1
np.random.choice(5, size=2, p=[0, 0.2, 0.7, 0.1, 0])
Out[93]:
In [104]:
np.random.choice(['꽝','하와이 왕복티켓 2매',
'스타벅스 상품권 5만원' ],
1,
p=[0.7, 0, 0.3])
Out[104]:
In [105]:
arr = np.arange(1,47)
arr
Out[105]:
In [126]:
np.random.choice(arr, size=3, replace=False)
Out[126]:
np.random.shuffle()¶
- 데이터의 순서 바꾸기¶
- np.random.shuffle(집합형자료)
In [402]:
myList = [10, 30, 100, 5, 33, 99, 2]
myList
Out[402]:
In [403]:
np.random.shuffle(myList)
myList
Out[403]:
In [404]:
np.random.shuffle(myList)
myList
Out[404]:
넘파이 배열의 소숫점 표시¶
- np.set_printoptions(precision=소숫점자리수)
- 기본값이 소숫점 8자리. 9자리에서 반올림
In [127]:
arr1 = np.array([3.45657, 4.560990234909, 5.0239329392])
arr1
Out[127]:
In [128]:
# 기본 소숫점 표시를 3번째자리에서 반올림 형태로 변경
np.set_printoptions(precision=2)
In [129]:
arr1 = np.array([3.45657, 4.560990234909, 5.0239329392])
arr1
Out[129]:
In [130]:
# 기본값으로 다시 변경
np.set_printoptions(precision=8)
In [131]:
arr1 = np.array([3.45657, 4.560990234909, 5.0239329392])
arr1
Out[131]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
반응형