ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [21.02.15] numpy와 친해지기 첫째 날
    AI/study log 2021. 8. 29. 23:57
    728x90

    numpy와 친해지기

    numpy나 pandas와 같은 파이썬 모듈이 거의 기본으로 쓰인다는 것은 이미 잘 알고 있고 그 개념은 엄청 많이 들었는데 막상 쓰려면 매번 예제를 찾아봐야 하는 문제 때문에 이번 개강 전에 바짝하기로 했다! 사실 이번에 듣게 되는 '기계학습' 수업에서 거의 numpy를 빠삭하게 다뤄야 편하다고 해서 딱 7일 컷으로 시작하기로 했다! 그래도 이렇게 html 파일에 내 식으로 정리하는 게 기억에 많이 남기도 하고, 나중에 기억 안 나거나 복습할 때 다시 찾아올 수 있으니 좋다! 더불어 수학 공부도 같이 할 수 있고 연습문제도 같이 섞여있고 정리도 아주 잘 되어있는 질 좋은 사이트를 발견해서 신나게 시작한다. 얏호~!

    1. 넘파이 배열

    1.1 import numpy as np로 모듈을 불러온다! 기본적인 numpy 배열을 크게 1차원, 2차원, 3차원으로 나누어 접근하도록 하자!

    1. 1차원 배열=='벡터'
      • a=np.array([1,2,3])
    2. 2차원 배열=='행렬(matrix)' (벡터와 행렬을 일반화하여 '텐서'라고 부른다)
      • b=np.array([[1,2,3],[4,5,6]])
      • ※행, 열 개수 구하기
        len(b) #행의 수
        len(b[0]) #열의 수
    3. 3차원 배열
      • c=np.array([[[1,2],[3,4]],[[7,2],[2,7]]])
      • ※깊이, 행, 열 개수 구하기
        len(c) #깊이
        len(c[0]) #행의 수
        len(c[0][0]) #열의 수

    1.2 배열의 차원과 크기 알아내기
    ndim -> 배열의 차원
    -np.ndim(b) #2차원이므로 2

    shape -> 베열의 형태
    -np.shape(b) #2행 3열이기 때문에 (2,3) (행X열X깊이 순이다!)

    2. 배열의 인덱싱, 슬라이싱

    2-1. 배열의 인덱싱 (->크게 1차원 배열과 다차원 배열일 때로 나뉨!)

    1차원 배열일 땐, 파이썬의 리스트와 인덱싱 방법이 동일하다. 그러나 다차원 배열(2차원 이상)일 땐 컴마로 구분된 차원, 즉 축(axis)로 인덱싱한다!
    -b[1,0] # [행,열] 두번째 행의 첫번째 열

    ※ 배열 인덱싱=팬시 인덱싱 (데이터 베이스의 질의(Query)와 동일한 기능을 한다)
    -배열 인덱싱은 대괄호에, 숫자, 슬라이스가 아니라 '위치정보를 나타내는 또 다른 배열'을 받을 수 있다 => 다차원 배열도 가능함!

    배열 인덱싱은 크게 '불리언 배열 방식'과 '정수 배열 방식' 두 가지로 나뉜다.

    1. 불리언 배열 방식
      • a[a%2==0]
      • a[a>1]
    2. 정수 배열 방식
      idx=np.array([0,0,0,0,1,1,1,1])
      a[idx] #[1,1,1,1,2,2,2,2] 형태의 배열 반환

    2-2. 배열의 슬라이싱

    • b[0 , :] #[ 행, 열] 첫번째 행의 전체 열
    • b[1 , 1:] #두번째 행의 두번째 열부터 끝 열까지
    • b[: , 1] #전체 행의 두번째 열

    728x90
Designed by Tistory.