STUDY_SEONMIN
DAY8 - linspace, logspace 함수 본문
linspace
- 설정한 범위에서 선형적으로 분할한 위치의 값을 출력
- np.linspace(시작값, 끝, n)
- np.linspace(0, 100, 5) => 0부터 100까지 같은 간격으로 숫자를 5개 생성 => [0, 25, 50, 75, 100]
logspace
- 설정한 범위에서 로그로 분할한 위치의 값을 출력
- np.logspace(시작값, 끝값, n)
- np.logspace(2, 4, 3) => 10^2부터 10^4까지 같은 간격(로그 스케일)으로 숫자를 3개 생성=> [ 100, 1000, 10000 ]
*같은 간격(로그스케일) : 로그를 취했을 때 간격이 같다.
*
30세 연봉 $100,000 / 60세 연봉 $1,000,000 일 때
연봉이 선형으로 증가, 지수함수로 증가하는 두 경우에서 40세, 50세 연봉을 출력해보겠습니다.
우선 주어진 정보를 이용해 40세, 50세의 연봉을 알기 위해서는 주어진 연봉의 범위를 4개의 숫자로 분할해야 합니다. 30~60세를 4개의 숫자로 분할하면 30, 40, 50, 60이기에 동일하게 연봉의 범위를 4개의 숫자로 분할하면 각각 40세와 50세의 연봉을 확인할 수 있습니다.
여기서 중요한 것은 30,40,50,60세의 수치가 아니라 "4개의 숫자로 분할해야한다!"라는 점입니다.
1) 선형일 때
- 연봉이 선형으로 증가하기 때문에 분할할 때 np.linspace 함수를 활용해줍니다.
- np.linspace(100000, 1000000, 4)
- 연봉이 선형으로 증가할 경우 40세 : $400,000 , 50세 : $700,000 의 연봉을 받는 것을 확인할 수 있습니다.
2) 지수함수로 증가할 때
- 연봉이 지수함수로 증가하기 때문에 np.logspace 함수를 활용해줍니다.
*지수함수로 증가하는데 왜 np.logspace를 사용하나요?
나이에 따라 연봉이 지수함수로 증가하는 관계는 "연봉"의 기준에서 보면 연봉에 따라서 나이가 로그함수로 증가하는 관계입니다.
따라서 나이 범위를 4개로 분할한다는 것은 연봉을 로그스케일로 변환했을 때의 범위가 4개로 분할된다는 것과 같은 의미입니다.
- np.logspace(100000, 1000000, 4)
- 코드를 실행시켰더니 inf (무한대) 가 출력되었습니다.
뭐가 문제일까요??
시작값과 끝값을 생각해보면 그 문제를 파악할 수 있습니다.
np.logspace 함수를 실행시킨 결과로 우리가 얻고싶은 것은 [100000, 40세연봉, 50세연봉, 1000000] 입니다.
위에서 np.logspace함수는 log10(x) = y가 되는 x값을 출력한다고 하였고, np.logspace(시작 y, 끝 y, n)과 같은 형태라고 하였습니다. 따라서 100,000이 출력되기 위해서는 시작 y에 5가 1,000,000이 출력되기 위해서는 끝 y에 6이 들어가야한다는 것을 알 수 있습니다.
코드를 수정해서 다시 실행시키면
'EDUCATION > DSS Online 6기' 카테고리의 다른 글
DAY8 - numpy.unique, numpy.concatenate (0) | 2021.01.19 |
---|---|
DAY8 - numpy.random (0) | 2021.01.19 |
DAY8 - 프리미어리그 데이터 분석 (0) | 2021.01.19 |
DAY8 - 분산, 공분산, 상관계수 (0) | 2021.01.18 |
DAY8 - numpy basic (0) | 2021.01.18 |