Flearning의Python으로 Big Data 분석하기

    를 기반으로 들은 내용을 정리했다

    1. Numpy?


    Numerical Python의 줄임말로, 고성능의 다차원 배열 객체를 다룰 때 유용하게 쓰이는 라이브러리이다.


    2. Numpy 배열


    2.1 배열의 생성

    파이썬의 리스트로 정의될 수 있으며, 직접 정의할 수도 있다.


    import numpy as np
    data1 = [1,2,3,4,5]
    np1_arr = np.array(data1)
    
    np2_arr = np.array([1,2,3,4,5])
    
    

    두 배열 np1_arr, np2_arr은 1차원의 서로 같은 값을 가진 Numpy 배열이 생성된다.

    이 후 np1,2_arr 들의 형태를 type(np1.arr)을 이용하여 살펴보면 <type 'numpy.ndarray'> 라는 데이터 타입으로 Numpy 배열이 생성되어 있다.


    위의 방법처럼 일일이 정의해주는 것이 아닌 다양한 배열 생성함수를 제공한다.

    import numpy as np
    
    a = np.zeros((2, 2)) #0으로 모두 채운 행렬 생성, 출력 '[[0, 0],[0, 0]]'
    b = np.ones((1, 2)) #1으로 모두 채운 행렬 생성, 출력 '[[1, 1]]'
    c = np.full((2, 2), 7) # 특정 수로 모두 채운 행렬 생성, 출력'[[7, 7],[7, 7]]'
    d = np.eye(3) # 단위행렬 생성, '[[1, 0, 0], [0, 1, 0], [0, 0, 1]]'
    e = np.random.random((2, 2)) #임의값으로 채운 행렬 생성, 출력'[[ 0.51192618,  0.59765307],[ 0.82372035,  0.65580727]]'
    f = np.arange(5, 9) #시작값부터 끝값까지 증가하는 행렬 생성, 출력 '[5,6,7,8,9]'
    
    




    이렇게 numpy.ndarray 타입들은 shape를 통해 차원과, 차원의 크기를 알 수 있다.


    import numpy as np
    np_arr = np.array([[1,2,3],[4,5,6]]) # 2차원배열을 생성
    print(np_arr.shape) #출력 (2, 3)
    


    또한 배열의 개별 값의 데이터 타입도 확인할 수 있고, 생성시에 타입을 정해줄 수도 있다.

    import numpy as np
    arr1 = np.array([[1,2,3],[4,5,6]])
    print(arr1.dtype) #출력 dtype('int32')
    
    arr2 = np.array([1.0, 4.1, 5.5], dtype=np.float64)
    print(arr2.dtype) #출력 dtype('float64')
    
    


    2.1 배열의 연산

    배열끼리, 혹은 배열과 스칼라 연산은 +, -, *, /, ** 산술연산자 모두를 지원한다.


    import numpy as np
    
    arr1 = np.array([[1,2,3],[4,5,6]], dtype=np.float64)
    arr2 = np.array([[7,8,9],[10,11,12]], dtype=np.float64)
    
    arr1 + arr2
    #출력 array([[  8.,  10.,  12.],
    #       [ 14.,  16.,  18.]])
    
    arr1 - arr2
    #출력 array([[-6., -6., -6.],
    #       [-6., -6., -6.]])
    
    arr1 * arr2
    #출력 array([[  7.,  16.,  27.],
    #       [ 40.,  55.,  72.]])
    
    arr1 / arr2
    # 출력 array([[ 0.14285714,  0.25      ,  0.33333333],
    #       [ 0.4       ,  0.45454545,  0.5       ]])
    
    arr1 ** 0.5
    #출력 array([[ 1.        ,  1.41421356,  1.73205081],
    #       [ 2.        ,  2.23606798,  2.44948974]])
    

    여기서 주의해야 할점은 Numpy 배열끼리의 곱과 나눗셈은 행렬의 곱이 아니라는 점이다.

    또한 배열의 차원과 크기도 서로 동일해야하만 연산이 가능하다.


    'Python' 카테고리의 다른 글

    5. Pandas 자료구조  (0) 2017.08.03
    4. Numpy를 이용한 데이터 분석  (0) 2017.08.03
    3. Numpy 함수  (0) 2017.08.02
    2. Numpy 배열 인덱싱  (0) 2017.08.01
    COMCBT에서 hwp를 받아오는 프로그램  (0) 2017.07.25
    Posted by Config