-
5일차(135 ~ 155)책/파이썬 라이브러리를 활용한 데이터 분석 2019. 3. 25. 17:12반응형
오늘 잘하면 5장 중간까지 나갈 수도 있겠네요.
5장 부분을 조금 읽어보니 2장에서 나온 내용이 좀 있습니다.
---------------------------------------------------------------------------------------------------------------------------------------------------------
유니버설 함수 입니다.
한 개 이상의 값을 받고 연산을 고속으로 하여 결과 값을 반환할 수 있는 함수라고 하네요.
exp는 자연 상수의 n제곱을 한다는 명령어 입니다.
square는 각 원소의 제곱을 계산하는 명령어 입니다.
fabs는 빠르게 절댓값을 구하는 명령어로 값이 복소수 일 경우 abs를 사용하고, 복소수가 아니라면 fabs를 사용하는 것이 좋다고 합니다.
sign이라는 명령어는 부호를 알아내는 명령어 입니다. 1(양수), 0(0), -1(음수) 라고 합니다.
rint는 소수자리를 반올림시키는 명령어 입니다. dtype는 유지되며, round와 같은 역할입니다.
modf는 값을 분수화 시켜서 몫과 나머지로 나누고 몫 배열과 나머지 배열을 보여주는 역할을 합니다.
isnan, isfinite, isinf 는 숫자인지 아닌지(isnan), 값이 무한인지 아닌지(isfinite, isinf) 여부를 bool형으로 보여준다고 합니다.
4.3 배열을 사용한 데이터 처리 입니다.
아래에서 Numpy 배열에 대한 산술 연산은 파이썬 순수 연산보다 최소 두 배에서 수백 배까지 빠르다고 나와있네요.
meshgrid는 2개의 1차원 배열을 받아 가능한 모든 (x,y)의 짝을 만들 수 있는 2차원 배열 2개를 만들어낸다고 합니다.
이렇게만 보면 이해가 잘 가지 않습니다. 직접 사용해보니 설명은 못하겠지만 이해는 가는 그런 명령어 입니다.
imshow는 이미지를 출력한다는 명령어입니다.
imshow 안에 들어가는 인자 cmap은 이미지의 색깔을 선택하는 명령어입니다.
책에 나온 회색말고도 여러가지가 있네요.
-설정을 하지 않은 경우
-jet로 설정한 경우(cmap = 'jet')
- cmap = plt.cm.RdYlBu 로 설정한 경우
colorbar는 오른쪽 막대기가 나타나게 하는 명령어입니다.
where은 이미 2일차에 나온 명령어이지만, 중첩 where에 대해 알아보도록 합시다.
만약 아래와 같이 여러 배열을 만들고 중첩 where을 사용했다고 가정해봅시다.
A,B,C,D는 1,2,3,4이고 a,b,c는 한 개 씩 True를 더 추가한 bool형 배열입니다.
(이해하기 쉽게 True, False를 뒤죽박죽 섞지 않았습니다.)
현재 나오는 출력은 array([?, ?, ?, ?, ?]) 입니다.
#1
일단 처음 where문을 봅시다. a형을 보고 True이면 A를 출력하고, 아니면 다음 where문으로 넘어갑니다.
a의 첫 번째 값을 보니 True입니다.
배열의 값이 갱신되어 array([1, ?, ?, ?, ?]) 입니다.
a의 두 번째 값을 보니 False입니다. 다음 where문으로 넘어갑시다.
#2
b형을 보고 True이면 B를 출력하고, 아니면 다음 where문으로 넘어갑니다.
a의 두 번째 값은 False이지만, b의 두 번째 값을 보니 True입니다.
배열의 값이 갱신되어 array([1, 2, ?, ?, ?]) 입니다.
a의 두 번째 값과 b의 두 번째 값을 보니 둘 다 False입니다. 다음 where문으로 넘어갑시다.
#3
c형을 보고 True이면 C를 출력, 아니면 D를 출력합니다.
a, b의 세 번째 값을 보니 False이고, c의 세 번째 값을 보니 True입니다.
배열의 값이 갱신되어 array([1, 2, 3, ?, ?]) 입니다.
#4
a,b,c의 네 번째 값을 보니 전부 False입니다.
배열의 값이 갱신되어 array([1, 2, 3, 4, ?]) 입니다.
#5
a,b,c의 값이 전부 False입니다.
배열의 값이 갱신되어 array([1, 2, 3, 4, 4]) 입니다.
sum이나 mean은 선택적으로 axis 인자를 받을 수 있다고 나와있습니다.
제가 2일차 때 sum(1)도 있고, sum(0)도 있고, sum()도 있어서 뭐가 뭔지 몰랐는데 지금은 이해하게 되었습니다.
n차원 배열도 됩니다.
cumprod는 누적 곱 입니다.
any는 하나 이상의 True가 있는지 확인하는 명령어입니다.
all은 모든 값이 True인지 확인하는 명령어 입니다.
in1d 명령어는 첫 번째 배열의 각 원소가 두 번째 배열 안에 값이 있으면 True를 반환하고, 없으면 False를 반환하는 명령어라고 합니다.
intersect1d은 두 배열의 교집합을 반환하는 명령어입니다.
union1d는 두 배열의 합집합을 반환하는 명령어입니다.
setdiff1d(X,Y)는 X에는 속하지만, Y에는 속하지 않는 차집합을 반환하는 명령어입니다.
setxor1d는 setdiff1d(X,Y) + setdiff1d(Y,X)와 같은 명령어로 둘의 차집합을 반환하는 명령어입니다.
(집합에 대해 잘 모르시는 분은 https://ko.wikipedia.org/wiki/벤_다이어그램 이 링크에 들어가시면 쉽게 이해할 수 있습니다.)
save, load는 배열 데이터를 디스크에 저장하고 불러오는 명령어라고 합니다.
savez 명령어는 여러 개의 배열을 압축 형식으로 저장할 수 있다고 합니다. 그냥 save는 한 개의 배열만 저장할 수 있나 봅니다.
loadtxt는 텍스트 파일을 불러오는 역할을 합니다. delimiter는 파이썬의 split같이 값을 구분해주는 단위를 알려주는 인자입니다.
savetxt는 텍스트 파일을 저장하는 역할을 합니다.
numpy.linalg 모듈은 행렬에 관한 명령어가 구비되어 있다고 합니다.
선형대수학을 배우신 분이라면 numpy.linalg에 나오는 명령어가 어떤 것인지 알 수 있을 것 같습니다.
하지만 저는 비전공자라 선형대수학을 배우지 않아서 설명을 해드리지 못합니다
인터넷에 검색해보니 공부 순서를 정해야 할 필요성을 느낍니다.
그래서 QR분해 -> 특이 값 분해 -> 무어-펜로즈 유사역원 -> 최소제곱해 순으로 배우는걸 추천드립니다.
이 책 끝나고 배워야 할 머신러닝 책에서도 선형대수학이 나온다던데 선형대수를 인강으로 배워야 할지 고민이 됩니다.
argmax는 최대 값의 처음 색인을 반환한다는 명령어입니다.
만약 D = array([1, 2, 3, 3, 3]) 이 있으면 D의 최대 값은 3이고, 최대 값이 처음 나오는 index는 2입니다. 그러므로 argmax를 사용시 2가 나오게 됩니다.
random.normal에 scale 인자가 나오는데, 이것은 표준편차라고 합니다.
normal(loc , scale, size) 가 들어갈 수 있는데 normal(평균, 표준편차, 만들어야 할 개수)라고 합니다. size는 (행, 열)로 나타낼 수 있습니다.
반응형'책 > 파이썬 라이브러리를 활용한 데이터 분석' 카테고리의 다른 글
7-1일차(192 ~ 217) (0) 2019.03.27 6일차(157 ~ 192) (0) 2019.03.26 4일차(115 ~ 134) (0) 2019.03.25 3-2일차(55 ~ 70) (0) 2019.03.23 3-1일차(47 ~ 54) (0) 2019.03.22