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
- numpy.arange(), 균일 간격 배열
- numpy.concatenate(), 배열 합치기
- numpy hstack, vstack 함수 (배열 연결)
- numpy.average(), 배열 가중 평균
- Numpy 배열을 List로 변환
- 파이썬 List를 Numpy 배열로 변환
- numpy flatten() 함수, 1차원 배열로 변환(평탄화)
- numpy의 min(), max() 함수 (최소, 최대 값)
- numpy.mean(), 배열 평균 계산
- numpy.log(), 로그 함수 사용 방법
- numpy.shape(), 배열 크기/형태/차원 확인
- numpy.sqrt(), 배열의 제곱근 계산
- numpy.zeros(), 0으로 채워진 배열 생성
- Python Numpy 버전 확인 방법
- numpy.argsort(), 배열 정렬
- numpy.clip(), 배열의 최대/최소 값 지정
- numpy.linspace(), 동일 간격 숫자 배열
- Numpy - random 모듈, 난수 배열 생성
- Numpy의 ndarray 사용 방법 알아보기
- numpy.transpose(), 전치 행렬 변환
- Numpy - where() 사용 방법
- Python - numpy.append(), 배열 추가
- Python numpy.random.choice(), 랜덤 샘플링
- Python numpy.reshape(), 배열 차원 변경
- Python numpy.sum(), 배열의 합
- Python numpy.unique(), 배열 중복 제거
- Python - json.dumps()로 JSON 출력하기
- Python - find() 문자 위치 찾기
- Python lower() 문자열 소문자로 변환
- Python upper() 문자열 대문자로 변환
- Python 에러 해결, 'conda' 용어가 cmdlet, 함수, 스크립트 ... 인식되지 않습니다.
- Python 에러 해결, AttributeError: module 'jwt' has no attribute 'encode'
- Python - assert 사용 방법
- Python - Counter로 Collection 개수 세기
- Python - enumerate(), for/index 예제