파이썬/NIPA 데이터분석 강의

NIPA 데이터분석 첫번째 활용선택 : 01 NumPy와 연산 시작.

mcdn 2020. 9. 29. 14:24
반응형
 

NIPA 데이터분석 첫번째 활용선택 : NumPy 사용해보기

2020/09/26 - [파이썬/NIPA 데이터분석 강의] - NIPA 온라인 데이터분석 체험 특강 : 04 그래프까지 NIPA 온라인 데이터분석 체험 특강 : 04 그래프까지 마지막으로 학습된 모델로부터 데이터를 예측해보�

so-es-immer.tistory.com

1. 루프는 느리다. 

파이썬에서 배열 요소 하나하나에 접근하는 건 느리게 수행된다 

위와 같이 for문으로 하나하나 접근할 때 느리게 적용된다고 한다 

거기다가 만약 100만개가 되면?? 

매~우 느리다 대략 5.3초정도 걸린다 

넘파이는 이런걸 미리 컴파일해서 시간이 무척 빠르다 

big_array + 5 같이 넘파이 수행 

 

2. 기본 연산 

넘파이는 + - * / 와 같은 기본 연산을 수행한다. 각 요소마다 연산 수행!

아까 for문을 돌려 만드는 거 비해 훨씬 빠르다 

 

3. 행렬간 연산 

이건 x + y 와 같이 행렬간 연산도 가능하다 

4. Broadcasting 브로드캐스팅 

shpae이 다른 array 끼리 연산 

5. 이번에는 하나가 아니라 일차원 배열이랑 더한다 이러면 각 열마다 똑같이 더해진다 

 

2 6 9 는 1을 더해서 

4 5 4 는 2를 더해서.. 

이런 느낌인 것 

6. 이번에는 3,1 과 1,3 이 있을 때 

차원을 맞출 수 있으니까 

3 * 3으로 늘려서 계산을 할수 있다면 이렇게 만든다 

퀴즈 1번이 답이지. 

그림판에 그림은 차례대로 A B(늘린거) A+B결과 

이렇게 하는거다!

7. 대용량 데이터를 다룰 때는 요약 통계가 필요하다 

이때 x 는 [[0,1,2,3][4,5,6,7]] 이렇게 데이터가 나온다 

np.sum을 하면 다 더해진다 

np.min가장 작은 값을 찾으면 0이 출력

np.max 가장 큰 값 7

np.mean 평균을 출력 

np.std(x)라고 표준편차도 구할 수 있다 

 

8. sum 의 경우 axis에 따라 더할 수도 있다 

그냥 sum을 했다면 모든 값을 단순 더하는데 axis = 0 또는axis = 1로 한다면 각 축에 맞게 더할 수도 있다 

axis = 0은 세로였다 그럼 4 6 8 10처럼 세로로 더해진다 

 

9. 마스킹 연산 

x < 3과 같이 if연산을 수행한다! 

True / false array를 인덱스처럼 넣게 되면 True인 값만 출력된다 

 

주어진 daily_liar_data 배열은 양치기 소년이 100일동안 한 말을 정리한 배열입니다.

0은 거짓말을 한 날이고, 1은 거짓말을 하지 않은 날입니다.

양치기소년이 100일 중 거짓말을 총 몇 번 했는지, 그 횟수를 세어 정확히 출력해주세요.

import numpy as np

daily_liar_data = [0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0]


# 양치기 소년이 거짓말을 몇 번 했는지 구하여 출력해주세요.

def main() :
    # 해당하는 코드 작성
    daily = np.array(daily_liar_data)
    cntlist = daily[daily>0]
    #print(cntlist)
    cnt = 100 - np.sum(cntlist)
    print(cnt)

if __name__ == "__main__" :
    main()

 리스트의 개수를 알 수 있는 함수는 안 배운거같은데ㅜㅜ 

그래서 그냥 1을 더해서 최종 100개에서 빼는 식으로 

거짓말한 횟수를 셌다 

주의점 

ㄱ. 그냥 daily_liar_data로 numpy계산을 할 수 없다. daily = np.array(daily_liar_data)처럼 numpy array class객체로 만들어야 연산가능하다 

 

반응형