데이터 청년 캠퍼스(2022)/배운 내용 정리

7.5(화) Colab / NumPy

데욱 2022. 7. 5. 20:46

Colab ( Colaboratory)

 

  • 구글 리서치팀에서 개발한 제품
  • 누구나 브라우저를 통해 임의의 python 코드를 작성하고 실행
  • 무료로 제공하며 Jupyter와 차이가 크게 없음
  • 자원이 무제한이 아님(더 빠른 처리를 원한다면 유료버전인 Colab Pro 사용 권장)

 

Colab에서 주의해야 할 점

 

  • 처리/ 네트워크 지연이 발생할 수 있음
  • 자원이 무제한이 아님
  • 메모장은 최대 12시간 실행할 수 있음
  • 메모리 용량이 정해져 있지 않음

 

https://colab.research.google.com/?hl=ko

 

단축키

 

  • 단축키 설정하면: Ctrl + M H
  • 노트 저장: Ctrl + S
  • 셀 추가: Ctrl  +  M A
  • 셀 실행: Ctrl  + Enter
    (Shift + Enter는 다음 셀로 이동) 

 

새 노트 실행

 

저장 시 구글 드라이브 - Colab Notebooks에 저장

 

NumPY(Numerical Python)

 

  • 파이썬에서 행렬을 효과적으로 이용하기 위한 외부 라이브러리
  • 행렬과 관련된 다양한 기능을 가지고 있어, 처리 / 분석에 적합함
    - ndarrray 라는 자체 자료형으로 데이터 병합, 부분집합, 필터링, 변형, 연산, 정렬, 유일 원소 찾기 등의 기능 구현
    - NumPY 내부 알고리즘은 C언어로 작성되어, 적은 메모리로 빠른 처리가 가능

 

빠른 처리가 가능하다는 것을 확인

 

 ndarray 

 

다양한 자료형 가능
난수로 구성된 객체 ndarray 만들기
객체 ndarray의 Attribute
자료형 list와 객체 ndarray의 출력 비교
ndarray에서는 같은 자료형만 사용가능(float형으로 자동 변환)

 

ndarray 객체 만들기

 

 

astype

 

  • 객체 ndarray의 자료형을 변환해야 할 경우
    - 실수형을 정수형으로 바꾸어 소수점 이하를 버릴 때
    - 외부 파일에서 불러운 문자열을 실수형 / 정수형으로 바꿀 때
    - 변환에 실패할 경우, ValueError 발생

 

자료형 변환 시

 

Broadcasting

 

  • 벡터화(vectorization)
    - NumPy는 for 반복문을 사용하지 않고 연산 가능

벡터화 연산

 

Indexing / Slicing

 

  • 1차원 행렬일 경우, 기존 Python 문법과 동일하게 사용

 

1차원 행렬

 

  • 다차원 행렬일 경우, 기존 Python 문법과 유사 (대괄호 혹은 쉼표로 구별)

 

다차원 행렬

 

reshape

 

  • 생성한 객체 ndarray의 차원 구조 변경
    - 동일한 차원의 다른 행렬 구조
    - 다른 차원의 다른 행렬 구조

reshape 사용

 

ravel / flatten

 

  • 다차원의 객체 ndarray를 1차원으로 일괄 변경
    평탄화: raveling, flattening
    - 메소드 ravel가 반환한 새로운 객체 ndarray는 기존 객체 ndarray를 가르킴
    - 메소드 flatten은 새로운 객체 ndarray를 생성

ravel과 flatten 사용

 

concatenate / vastack / hstack

 

서로 다른 객체 ndarray를 합침

  • concatenate: 매개변수로 전달 받은 축 정보로 합침
  • vstack: 행으로 합침 (세로)
  • hstack: 열로 합침 (가로)
  • 클래스 ndarray에 없음 ( 클래스 NumPy만 있음)

서로 다른 객체 합치기

 

split / vsplit / hsplit

 

ndarray의 차원을 분리함

  • 매개변수로 분리할 개수 혹은 range 형태로 전달
  • Scala 형태: 동일한 크기의 차원으로 Scala 개로 분리
  • range 형태: 총 3개로 분리하며, 중간 Index 값을 입력

vsplit, hsplit 분리

 

repeat / tile

 

행렬을 반복

  • 빈번하게 사용하지 않지만, Oversamling 등으로 활용 가능
  • 클래스 NumPy만 있음
  • 메소드 repeat는 행렬 전체를 반복하는 것이 아닌, 행렬의 요소가 반복함
  • Scala 형태: 모든 요소를 Scala 만큼 동일하게 반복
  • 배열 형태: 각 요소별 다르게 반복
  • 다차원 행렬에서 축 정보가 없으면 메소드 repeat는 평탄화 됨

 

repeat 반복

 

  • 메소드 tile은 행렬 자체가 반복함
  • 메소드 repeat와 동일하게 반복 횟수를 Scala 혹은 배열 형태로 전달
  • Scala 형태: Scala 만큼 열 방향으로 동일하게 반복
  • 배열 형태: 행 혹은 열 방향으로 반복

 

tile 반복

 

Transpose / SwapAxes

 

행과 열을 맞바꾼 전치 행렬(Transposed Matrix)

  • 2차원 행렬일 경우, 행과 열을 바꿈
  • 클래스 ndarray는 Attribute T가 있음
  • 메소드 transpose 또한 가능
  • 3차원 이상의 행렬일 경우, 바꾸고자 하는 축(Axe)을 입력

전치 행렬 transpose

'데이터 청년 캠퍼스(2022) > 배운 내용 정리' 카테고리의 다른 글

7.5(화) - CSV 파일 분석 (2)  (0) 2022.07.06
7.5(화) - CSV 파일 분석 (1)  (0) 2022.07.05
7.4(월) Pandas  (0) 2022.07.04
7.1(금) 파이썬 - MatPolt, NumPy  (0) 2022.07.03
6.30(목) CSS 3 (2)  (0) 2022.06.30