numpy.random.choice()
함수는 1차 배열의 요소들을 임의 추출(랜덤 샘플링)하는데 사용되는 함수입니다.
정해진 값들 중에 무작위로 숫자들을 얻고 싶을 때 이 함수를 사용할 수 있습니다.
1. numpy.random.choice()의 Syntax
- arr : 1차원 배열 또는 int, 랜덤 샘플링에서 사용될 배열 또는 숫자 범위
- size : 추출할 랜덤 샘플링 개수
- replace : 여러 개의 랜덤 샘플링을 추출할 때, replace가 true면 동일한 값이 추출될 수 있음. false면 동일한 값이 추출되지 않음
- p : Optional. 입력하지 않으면 모든 요소가 같은 확률로 랜덤 샘플링되며, p를 입력하여 요소마다 다른 확률로 샘플링될 수 있도록 조절할 수 있음
random.choice(arr, size=None, replace=True, p=None)
2. N개의 랜덤 숫자 추출
아래와 같이 지정된 범위의 숫자들 중에 랜덤 샘플링을 할 수 있습니다.
choice(N)
은 0에서 'N-1' 사이의 숫자들 중에서 1개를 랜덤으로 추출choice(N, A)
은 0에서 'N-1' 사이의 숫자들 중에서 A개의 숫자를 랜덤으로 추출
import numpy as np
# 0~9 사이의 숫자 중 1개 랜덤 추출
arr = np.random.choice(10)
print(arr)
# 0~4 사이의 숫자 중 5개 랜덤 추출
arr = np.random.choice(5, 5)
print(arr)
Output:
8
[4 4 2 3 2]
1.1 정해진 숫자들 중에서 랜덤 샘플링
아래와 같이 정해진 숫자들 중에서 랜덤 샘플링을 할 수 있습니다.
choice(arr)
는arr
배열의 요소들 중에 1개를 랜덤으로 추출choice(arr, A)
는arr
배열의 요소들 중에 A개를 랜덤으로 추출
import numpy as np
# 배열의 요소들 중에 랜덤으로 1개 요소 추출
arr = np.random.choice([5, 10, 15, 20, 25])
print(arr)
# 배열의 요소들 중에 랜덤으로 5개 요소 추출
arr = np.random.choice([5, 10, 15, 20, 25], 5)
print(arr)
Output:
20
[20 25 20 15 25]
3. N개의 랜덤 숫자 추출(중복 제외)
지정된 숫자들 중에서 N개의 랜덤 샘플링을 하면, 중복된 값이 여러번 추출될 수 있습니다.
replace=False
으로 설정 시, 랜덤 샘플링에서 중복된 값을 추출하지 않음
import numpy as np
# 배열의 요소들 중에 랜덤으로 3개 요소 추출 (중복 가능)
arr = np.random.choice([5, 10, 15, 20, 25], 3)
print(arr)
# 배열의 요소들 중에 랜덤으로 3개 요소 추출 (중복 제외)
arr = np.random.choice([5, 10, 15, 20, 25], 3, replace=False)
print(arr)
Output:
[10 10 15]
[10 25 5]
3.1 가능한 숫자보다 더 많이 추출할 때
중복을 허용하지 않았을 때 추출 가능한 숫자보다 더 많은 숫자를 추출할 수는 없습니다. 만약 더 많이 추출하려고 하면 아래와 같이 에러가 발생합니다.
import numpy as np
arr = np.random.choice([5, 10, 15, 20, 25], 10, replace=False)
print(arr)
Output:
Traceback (most recent call last):
File "/home/js/IdeaProjects/python-ex/ex2.py", line 3, in <module>
arr = np.random.choice([5, 10, 15, 20, 25], 10, replace=False)
File "mtrand.pyx", line 965, in numpy.random.mtrand.RandomState.choice
ValueError: Cannot take a larger sample than population when 'replace=False'
4. N개의 랜덤 숫자 추출(확률 변경)
- p 인자로 각 요소에 대한 확률을 입력할 수 있음
- 확률은 0 이상의 값만 가능하며, 전체 합은 1이 되어야 함
import numpy as np
# 배열의 요소들 중에 랜덤으로 10개 요소 추출 (확률 균등)
arr = np.random.choice([5, 10, 15, 20, 25], 10)
print(arr)
# 배열의 요소들 중에 랜덤으로 10개 요소 추출 (다른 확률)
arr = np.random.choice([5, 10, 15, 20, 25], 10, p=[0.4, 0, 0.2, 0.4, 0])
print(arr)
Output:
[25 25 15 25 10 20 20 15 5 15]
[ 5 20 20 5 20 20 15 20 20 5]
Loading script...
Related Posts
- Python - Yaml 파일 파싱하는 방법
- Python - 파일 내용 삭제
- Python - for문에서 리스트 순회 중 요소 값 제거
- Python - 두 리스트에서 공통 요소 값 찾기
- Python - 문자열 앞(뒤)에 0으로 채우기
- Python - 공백으로 문자열 분리
- Python - 중첩 리스트 평탄화(1차원 리스트 변환)
- Python - 16진수 문자열을 Int로 변환
- Python - 두 날짜, 시간 비교
- Python f-string으로 변수 이름, 값 쉽게 출력 (변수명 = )
- Python - nonlocal과 global 사용 방법
- Python 바다코끼리 연산자 := 알아보기
- Python - pip와 requirements.txt로 패키지 관리
- Python - 딕셔너리 보기 좋게 출력 (pprint)
- Python - Requests 사용 방법 (GET/POST/PUT/PATCH/DELETE)
- Python - 온라인 컴파일러 사이트 추천
- Python - os.walk()를 사용하여 디렉토리, 파일 탐색
- Python - 문자열 비교 방법
- Python - Text 파일 읽고 쓰는 방법 (read, write, append)
- Python - 리스트에서 첫번째, 마지막 요소 가져오는 방법
- Python - 두개의 리스트 하나로 합치기
- Python - 리스트의 마지막 요소 제거
- Python - 리스트의 첫번째 요소 제거
- Python 소수점 버림, 4가지 방법
- Python 코드 안에서 버전 확인 방법
- Python 소수점 반올림, round() 예제
- Python - 리스트 평균 구하기, 3가지 방법
- Python - bytes를 String으로 변환하는 방법
- Python - String을 bytes로 변환하는 방법
- Python 버전 확인 방법 (터미널, cmd 명령어)
- Python - 람다(Lambda) 함수 사용 방법
- Python - dict 정렬 (Key, Value로 sorting)
- Python - range() 사용 방법 및 예제
- Python - 리스트를 문자열로 변환
- Python - 문자를 숫자로 변환 (String to Integer, Float)