ABOUT ME

-

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

    3. 배열 생성

    크게 다섯 가지로 나누어 배열 생성 메소드를 살펴볼 것이다.

    1. zeros/ones
      • zeros:
        a=np.zeros(5) -> [0,0,0,0,0]
        b=np.zeros((2,3)) -> [[0,0,0],[0,0,0]]
      • ones:
        c=np.ones(4) -> [1,1,1,1]
        d=np.ones((2,2)) -> [[1,1],[1,1]]
    2. zeros_like/ones_like
      • zeors_like: 입력한 배열과 같은 크기로, 0으로 초기화된 새 배열 생성
        e=np.zeros_like(d) -> [[0,0],[0,0]]
      • ones_like: 입력한 배열과 같은 크기로, 1로 초기화된 새 배열 생성
        f=np.ones_like(e) -> [[1,1,1],[1,1,1]]
    3. empty
      • g=np.empty((4,3)) -> 특정 값으로 초기화되지 않은 값으로 배열 생성
    4. arange=Numpy 버전의 range!
      • np.arange(10) -> 0~9
      • np.arange(0,10,2) -> 0,2,4,...,8
    5. linspace/logspace
      • linspace = 선형구간
        np.linspace(0,100,5) -> 0부터 100까지의 '선형 구간'을 '5개'로 나누겠다! [0,25,50,75,100]
      • logspace = 로그 구간
        np.logspace(0.1,1,10) -> 0.1부터 1까지의 '로그 구간'을 '10개'로 나누겠다!

    4. 넘파이의 변형

    4-1. 1차원 배열의 전치(transpose)=행과 열을 바꾸는 작업
    -A=np.array([[1,2,3],[4,5,6]])
    -A.T -> ([[1,4],[2,5],[3,6]])

    4-2. 배열 크기 변형
    : 만들어진 배열의 네부데이터를 '유지한 채' 형태만 바꾸려면 reshape! 단, 개수 다르면 오류남
    -A.reshape(1,6) -> [1,2,,3,4,5,6]

    +) 사용하는 갯수가 정해져 있어서 reshape 명령의 형태 튜플의 원소 중 하나는 -1로 대체 가능

    +) 다차원 배열을 무조건 1차원으로 만들려면!

    • flatten
    • ravel


    +) 차원만 1 증가 시키고 싶다면?
    - x[:,np.newaxis]

    4-3. 배열 연결하기
    : 행의 수나 열의 수가 같은 두 개 이상의 배열을 연결(concantenate)하여 더 큰 배열로 만들 때!

    1. hstack (=horizontal stack)
      : '행의 수'가 같은 두 개 이상의 배열을 '옆'으로 연결! -> 열 증가!
      np.hstack([a1,a2])
    2. vstack (=vertical stack)
      : '열의 수'가 같은 두 개 이상의 배열을 '위아래'로 연결 -> 행 증가!
      np.vstack([a1,a2])
    3. dstack (=depth stack)
      : '깊이' 방향으로 합->"가장 안 쪽의 원소의 차원 증가"
      2개의 (3X4) -> 1개의 (3X4X2)

    5. 배열의 연산

    -> 벡터화 연산= 선형 대수 공식과 동일, 반복문 X

    5-1. 넘파이의 산술 연산과 비교 연산
    -x=np.array([1,2])
    y.np.array([2,4])

    • x+y
    • x-y
    • x*y
    • x/y
    • x>15
    • x==2
    • x>y
    • x[x>15]
    +) 배열의 모든 원소가 같은지 확인하려면??
    np.all(x==-1)

    5-2. 지수함수, 로그함수 또한 지원
    a=np.arange(5)

    • np.exp(a)
    • 10**a
    • np.log(a+1)

    5-3. 브로드 캐스트 (벡터와 스칼라의 연산 -> 스칼라 값을 벡터로 확대 후 연산)

    728x90
Designed by Tistory.