ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Python 라이브러리와 Numpy
    ML&DL&AI/Python 2023. 6. 14. 17:59
    728x90

    1. 라이브러리

    • 라이브러리의 사전적 의미 도서관
    • 라이브러리(ilbrary)는 모듈(module)이라고도 불리며, 자주 쓰는 함수, 변수들을 모아 놓은 파이썬 파일이다.
    • 자주 사용하는 기능을 모듈화, 패키지화 하여 만들어 둔 것

     

     

    - 데이터 분석에 특화된 모듈(라이브러리)

    • Numpy
      • 고성능 과학계산을 위한 데이터분석 라이브러리

     

    • Pandas
      • 행과 열로 구성된 표 형식의 데이터를 지원하는 라이브러리

     

    • Matplotlib
      • 2D그래프로 시각화가 가능한 라이브러리

     

     

     

    1.1 표준 라이브러리와 외부 라이브러리

    • 표준 라이브러리
      • 파이썬에서 기본으로 제공하는 라이브러리
      • 파이썬 설치시 기본 제공
    • 외부라이브러리
      • 개발자가 필요에 의해 개발한 패키지와 모듈의 집합

     

     

    1.2 모듈

    • Module_test에 아래 함수를 저장
    # 두 수를 더해주는 함수 정의
    def add(num1, num2):
        """
        두수를 더해주는 함수
        num1, num2 = int
        """
        result = num1 + num2
        return result

     

    • 다른 파일에서  Module_test 모듈을 가져오는 방법
      • os 모듈을 불러오는 것
    import Module_test
    Module_test.add(10,20)
    30
    •  from를 통한 사용하는 방법
      • import* 는
      • os모듈로부터 모두(*) import
    from Module_test import add
    # from Module_test import*
    
    add(20,50)
    70
    • 차이점
    • import만 사용하면 모듈 안의 함수를 사용할 때, 모듈명.함수명( ) 사용
    • from을 사용하면 바로 함수명( ) 사용

     

     

    2. Numpy

    • Numerical Python의 약자
    • 데이터의 숫자계산을 간편하게 해주는 라이브러리
    • 파이썬 자료형인 list형태와 비슷하지만, "동일한 자료형"을 담는다는 차이점
    • 반복문 없이 각 데이터의 연산이 가능하다.
      • sum(), sqrt(), mean()
    • 각 값들마다 index번호를 부여받는다.
    • ndarray라고 불리는 넘파이 배열을 생성할 수 있다.

     

     

    2.1 numpy 라이브러리 불러오기

    import numpy as np

     

     

    2.2 1차원 배열(array)만들기

    list1 = [1,2,3,4,5]
    np.array(list1)
    array([1, 2, 3, 4, 5])

     

     

    2.3 넘파이배열 array와 list의 차이점

    • list는 더하기를 했을 때 각 데이터가 뒤로 가서 붙는 반면, 넘파이 배열은 같은 index 데이터를 더해진다.
    list2 = [1,2,3,4,5]
    arr1 = np.array(list2)

     

    • 리스트의 연산
    list2 + list2
    [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]

     

    • array 배열의 연산
    arr1 + arr1
    array([ 2,  4,  6,  8, 10])

     

    • list자료형은 자료형에 상관 없이 담을 수 있지만, 넘파이 배열은 동일한 자료형만 담을 수 있다.
    list3 = ['python',123]
    ['python', 123]

     

    • ( 123 ) 정수가 문자열( '123' )로 자동으로 형변환
    np.array(list3)
    array(['python', '123'], dtype='<U11')

     

     

     

    2.4 2차원, 3차원 넘파이 배열 생성하기

    •  2차원 넘파이 배열
    list4 = [[1,2,3],[4,5,6]]
    arr2 = np.array(list4)
    [[1, 2, 3], [4, 5, 6]]
    [[1 2 3]
     [4 5 6]]

     

    • 3차원 넘파이 배열
    arr3 = np.array([[[1,2,3],
             [4,5,6]],
             [[7,8,9],
             [10,11,12]]])
    array([[[ 1,  2,  3],
            [ 4,  5,  6]],
    
           [[ 7,  8,  9],
            [10, 11, 12]]])

     

     

    3. ndarray 

    • 동일한 자료형을 가지는 값들이 배열 형태로 존재함
    • N차원 형태로 구성이 가능하다.
    • 각 값들은 양의 정수로 색인(index)이 부여되어 있다.
    • ndarray를 줄여서 array로 표현한다.

     

     

    3.1 ndarray(넘파이 배열)의 속성

    • 배열의 모양(크기) 확인하기 : shape
    # 배열명.shape
    print(arr1.shape) # 1차원 데이터 : (데이터개수,)
    print(arr2.shape) # 2차원 데이터 : (행, 열)
    print(arr3.shape) # 3차원 데이터 : (높이, 행, 열)
    (5,)
    (2, 3)
    (2, 2, 3)

     

    • 배열의 요소 개수 확인하기 : size
    # 배열명.size > 데이터의 총 개수 확인하기
    print(arr1.size)
    print(arr2.size)
    print(arr3.size)
    5
    6
    12

     

    • 배열의 차원 확인하기 : ndim
    # 차원을 알려준다.
    print(arr1.ndim)
    print(arr2.ndim)
    print(arr3.ndim)
    1
    2
    3

     

    • 배열의 타입 확인하기 : dtype
    #배열명.dtype
    print(arr1.dtype)
    print(arr2.dtype)
    print(arr3.dtype)
    int32
    int32
    int32

     

     

    3.2 특정한 방식으로 넘파이 배열 생성하기!

     

    • 배열 안의 모든 데이터를 0으로 초기화해서 생성하는 방식
    • np.zeros(배열의 크기)
    arr_zero = np.zeros((2,2)) # tuple 형태로 행과 열의 개수를 지정해주기
    array([[0., 0.],
           [0., 0.]])

     

    • 배열안의 모든 데이터를 1로 초기화해서 생성하기
    • np.ones(배열의 크기)
    arr_one = np.ones((5)) # 하나만 쓰게 되면 1차원 배열이 생성
    array([1., 1., 1., 1., 1.])

     

    • 배열 안의 모든 데이터를 2로 초기화 해서 생성하기
    • np.full((배열의크기), 특정값)
    • 2개의 매개변수
    np.full((2,3), 2)
    array([[2, 2, 2],
           [2, 2, 2]])

     

    • numpy에서 자체적으로 제공해주는 함수 > 순차적으로 증가하는 넘파이배열 생성
    • arange(시작값, 끝값+1, 증감값) > range함수와 동일한 매개변수를 갖는다.
    np.arange(1,51)
    array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17,
           18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
           35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50])

     

    • 랜덤값으로 구성된 배열 생성!
    • np.random.randint(시작, 끝, size=(배열크기))
    np.random.randint(1,45,size=(2,3))
    array([[17,  7, 18],
           [39, 13, 24]])

     

     

    • 변경하고 싶은 배열명. astype("데이터 타입")
    arr_one.astype('int')
    array([1, 1, 1, 1, 1])

     

    • 배열의 타입을 지정하면서 배열을 생성
    • np.array(배열, dtype="데이터타입")

    np.array([1.1,2.3,3.5],dtype = 'int')
    array([1, 2, 3])

     

     

     

    3.3 Array 연산

    • numpy는 기본적으로 array 간의 사칙연산을 지원한다.
    • 같은 위치에 있는 요소들 끼리 연산
    arr_a = np.array([1,2,3])
    arr_b = np.array([4,5,6])
    
    arr_a + arr_b
    arr_a * arr_b
    arr_a / arr_b
    arr_a - arr_b
    array([5, 7, 9])
    array([ 4, 10, 18])
    array([0.25, 0.4 , 0.5 ])
    array([-3, -3, -3])

     

    • 2차원 배열의 연산
    arr_c = np.array([[1,2,3], [4,5,6]])
    array([[1, 2, 3],
           [4, 5, 6]])

     

    • 넘파이 배열에 정수를 연산하면 각 모든 위치에 있는 데이터의 연산이 일어남
    arr_c + arr_c
    array([[ 2,  4,  6],
           [ 8, 10, 12]])
    arr_c * 3
    array([[ 3,  6,  9],
           [12, 15, 18]])

     

     

    3.4 넘파이 배열의 인덱싱과 슬라이싱

     

    - 넘파이 배열의 인덱싱

    • 넘파이배열[인덱스번호]
    • index는 0부터 시작하므로 array1[2]는 3번째 위치의 데이터 값을 의미
    arr1 = np.arange(1,10)
    arr1[2]
    3

     

    • 2차원 배열의 인덱싱
    arr_2 = np.array([[1,2,3],[4,5,6]])
    arr_2[0][1]
    2

     

    • 2차원 데이터에서 인덱싱 두 번째 방법
    arr_2[0,1]
    2

     

    - 넘파이 배열의 슬라이싱

    arr_10 = np.arange(0,11)
    arr_10[2 : 6]
    array([2, 3, 4, 5])

     

     

    3.5 reshape()

    • 원래 있던 배열을 새로운 차원의 배열로 재배치할 때 사용
    • np.reshape(변경할 배열의 shape)
    arr20 = np.arange(1,51).reshape(5,10)
    array([[ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10],
           [11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
           [21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
           [31, 32, 33, 34, 35, 36, 37, 38, 39, 40],
           [41, 42, 43, 44, 45, 46, 47, 48, 49, 50]])

     

    • reshape 사용시 행과 열 둘 중에 하나의 값만 정해주고, 나머지 값은 -1로 지정하면 알아서 재배치 해준다.
    arr20.reshape(10,-1)

     

     

    3.6 인덱싱 슬라이싱 실습

    print(arr20[1,2])
    print(arr20[1,4:7])
    print(arr20[2,])
    print(arr20[[2,3],[1,2]])
    print(arr20[[2,1,-2],[3,2,-2]])
    13
    [15 16 17]
    [21 22 23 24 25 26 27 28 29 30]
    [22 33]
    [24 13 39]

     

    728x90

    'ML&DL&AI > Python' 카테고리의 다른 글

    Python 라이브러리와 Numpy2  (0) 2023.06.15
    python 함수  (0) 2023.06.13
    Python 딕셔너리(dictionary)  (0) 2023.06.13
    python 반복문  (0) 2023.06.12
    python 리스트와 튜플  (0) 2023.06.08
Designed by Tistory.