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
사용법 : np.numpy.choice(a, size=None, replace=True, p=none) - a : 배열이면 이미 있는 데이터로, 정수라면 arange(a) 함수 명령을 통해 데이터를 만듭니다. - size : 샘플을 원하는 갯수 - replace : boolean 으로 true일 경우 선택되었더라 하더라도 데이터를 다시 선택할 수 있습니다. - p : 각 데이터가 선택 될 수 있는 확률입니다 ( 주사위가 각 면이 나올 확률이 1/6인 것 처럼)