본문 바로가기
Development/Python

NumPy 사용

by 폴피드 2023. 5. 9.
728x90
반응형

NumPy 배열

  • 차원(Dimension)을 축(axis)이라고 표현한다.

배열 속성값

  • shape : 배열의 각 축(axis)의 크기
  • ndim : 축의 개수(Dimension)
  • dtype : 각 요소(Element)의 타입
  • itemsize : 각 요소(Element)의 타입의 bytes 크기
  • size : 전체 요소(Element)의 개수

배열 생성

  • np.array 이용 : 튜플이나 List 입력

    print(np.array([2,3,4]))
    [2 3 4]
  • np.zeros(shape) : 0 으로 구성된 N 차원 배열 생성

    print(np.zeros((3,4)))
    [[0. 0. 0. 0.]
     [0. 0. 0. 0.]
     [0. 0. 0. 0.]]
  • np.ones(shape) : 1로 구성된 N차원 배열 생성

    print(np.ones((2,3,4)))
    [[[1. 1. 1. 1.]
      [1. 1. 1. 1.]
      [1. 1. 1. 1.]]
     [[1. 1. 1. 1.]
      [1. 1. 1. 1.]
      [1. 1. 1. 1.]]]
  • np.empty(shape) : 초기화 되지 않은 N차원 배열 생성

    print(np.empty((2,3)))
    [[2.45757343e-316 0.00000000e+000 0.00000000e+000]
     [0.00000000e+000 0.00000000e+000 0.00000000e+000]]
  • np.arange(start, stop, step): N 만큼 차이나는 숫자 생성, stop 은 포함되지 않는다

    print(np.arange(0, 10, 2))
    [0 2 4 6 8]
  • np.linspace(start, stop, num): N 등분한 숫자 생성, 처음, stop 포함됨.

    print(np.linspace(0,99, 100))
    [ 0.  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. 51. 52. 53.
     54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71.
     72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89.
     90. 91. 92. 93. 94. 95. 96. 97. 98. 99.]

기본 연산

  • "*" : 각각의 원소끼리 곱셈

  • @ : 행렬 곱셈

    A = np.array( [[1,1], [0,1]] )
    B = np.array( [[2,0], [3,4]] )
    print(A)
    print(B)
    ---------------
    [[1 1]
     [0 1]]
    [[2 0]
     [3 4]]
    
    print(A*B)
    print(A@B)
    ---------------
    [[2 0]
     [0 4]]
    [[5 4]
     [3 4]]
  • 집계함수

    • sum

    • min

    • max

    • argmax : 최대값 인덱스

    • cumsum : 누적합

    • axis 값을 매개변수로 입력하면 축을 기준으로 연산이 가능하다.

      • axis=0 (열기준)

      • axis=1 (행기준)

        b = np.arange(12).reshape(3, 4)
        [[ 0  1  2  3]
         [ 4  5  6  7]
         [ 8  9 10 11]]
        
         print(b.sum(axis=0))
         [12 15 18 21]
         print(b.sum(axis=1))
         [ 6 22 38]
  • 인덱싱, 슬라이싱

    • 배열 자체를 가지고 인덱싱이 가능 하다. 배열의 인덱스 값으로 배열 자체가 들어갈 수도 있다.

      a = np.arange(12).reshape(3,4)
      print(a)
      [[ 0  1  2  3]
       [ 4  5  6  7]
       [ 8  9 10 11]]
      
      b=a>4
      print(b)
      [[False False False False]
       [False  True  True  True]
       [ True  True  True  True]]
      
      print(a[b])
      a[b].shape 
      [ 5  6  7  8  9 10 11]
      (7,)
      
      a[b]=0
      print(a)
      [[0 1 2 3]
       [4 0 0 0]
       [0 0 0 0]]
  • 크기 변경

    • revel : 1차원으로 변경
    • reshape : 지정한 차원으로 변경
    • T : 전치 변환
    a = np.arange(12).reshape(3,4)
    print(a)
    print(a.shape)
    
    [[ 0  1  2  3]
     [ 4  5  6  7]
     [ 8  9 10 11]]
    (3, 4)
    
    print(a.ravel())   # a.reshape(-1)
    [ 0  1  2  3  4  5  6  7  8  9 10 11]
    
    print(a.T)
    [[ 0  4  8]
     [ 1  5  9]
     [ 2  6 10]
     [ 3  7 11]]
  • 데이터 합치기

    • vstack (열기준), hstack(행기준)

      a = np.array([1, 2, 3, 4]).reshape(2, 2)
      print(a)
      [[1 2]
       [3 4]]
      
      b = np.array([5, 6, 7, 8]).reshape(2, 2)
      print(b)
      [[5 6]
       [7 8]]
      
      print(np.vstack((a,b)))
      [[1 2]
       [3 4]
       [5 6]
       [7 8]]
      
      print(np.hstack((a,b)))
      [[1 2 5 6]
       [3 4 7 8]]
    • hsplit

      • 숫자 1개일경우 숫자기준으로 X개 등분

      • 리스트 넣을 경우 인덱스 기준 분할 (start, end) 일경우 end 는 포함되지 않음

        [[ 0  1  2  3  4  5]
         [ 6  7  8  9 10 11]]
        
        np.hsplit(a, 3)
        [array([[0,1],[6,7]]), 
         array([[2,3],[8,9]]), 
         array([[4,5],[10,11]])]
        
        np.hsplit(a, (3,4))
        [array([[0, 1, 2],[6, 7, 8]]), 
         array([[3],[9]]), 
         array([[ 4,  5],[10, 11]])]
728x90
반응형

'Development > Python' 카테고리의 다른 글

colab 에서 kaggle 설정  (0) 2023.06.07
Pandas 사용  (0) 2023.05.23
Conda python 버전 업데이트  (0) 2023.04.15
Mac 에서 Conda 설치  (0) 2023.04.05
파이썬 가상 환경 실행 및 VS Code 설정  (0) 2023.03.27