9일차 연습문제(Numpy)

송용진·2024년 2월 29일
  • Numpy
    • 실습 예제
      • 초급 : 배열 생성 및 조작
        import numpy as np
        
        # 1차원 배열 생성
        arr1 = np.array([1,2,3,4,5])
        print("1차원 배열 : ",arr1) # 1차원 배열 :  [1 2 3 4 5]
        
        # 2차원 배열 생성
        arr2 = np.array([[1,2,3], [4,5,6]])
        print("2차원 배열 : ",arr2) # 2차원 배열 :  [[1 2 3]
        																					# [4 5 6]]
        # 배열의 형태 변경
        arr_reshaped = arr2.reshape(3,2)
        print("변경된 배열 : ",arr_reshaped) ''' 변경된 배열 :  [[1 2]
        																												[3 4]
        																												[5 6]]'''
      • 중급 : 배열 연산 및 함수
        import numpy as np
        
        # 배열 덧셈
        arr1 = np.array([1,2,3])
        arr2 = np.array([4,5,6])
        print("배열의 덧셈 : ", arr1 + arr2) # [5 7 9]
        
        # 배열 곱셈
        print("배열의 곱셈 : ", arr1 * arr2) # [4 10 18]
        
        #통계 함수 사용
        arr = np.array([1,2,3,4,5])
        print("평균 : ", np.mean(arr)) # 평균 : 3.0
        print("표준 편차:", np.std(arr)) # 표준 편차 : 1.4142135623730951
        
      • 고급 : 브로드캐스팅 및 선형 대수
        import numpy as np
        
        # 브로드캐스팅
        arr = np.array([[1, 2, 3], [4, 5, 6]])
        print("브로드캐스팅 덧셈:\n", arr + 1) '''[[2 3 4]
        																					[5 6 7]]'''
        # 선형 대수: 행렬 곱셈
        a = np.array([[1, 2], 
        							[3, 4]])
        b = np.array([[5, 6], 
        							[7, 8]])
        print("행렬 곱셈 : ", np.dot(a, b)) '''[[19 22]
        																			 [43 50]]'''
    • 실습 문제
      • 배열 슬라이싱 1차원 배열을 생성하고, 배열의 첫 번째부터 세 번째 요소까지 슬라이싱하세요.
        • 송용진의 코드
          import numpy as np
          
          arr = np.array([1,2,3,4,5]) # 1차원 배열 생성
          ans = arr[0:3] # 슬라이싱 결과 : [1 2 3]
      • 배열 합계 2차원 배열을 생성하고, 모든 요소의 합계를 계산하세요.
        • 송용진의 코드
          import numpy as np
          
          arr = np.array([[1,2],
          								[3,4]]) # 2차원 배열 생성
          
          np.sum(arr) # 모든 요소의 합계 : 10
      • 조건부 선택 주어진 배열에서 5보다 큰 요소만 선택하세요.
        • 송용진의 코드
          import numpy as np
          
          arr = np.array([[5,0,1,6],
          								[2,7,3,8]]) # 2차원 배열 생성
          
          target = arr > 5
          print(target) '''[[False False False  True]
          								 [False  True False  True]]'''
          # arr > 5는	Boolean 값으로 이루어진 
          # arr와 모양이 같은 배열
          
          print(arr[target]) # [6 7 8]
          # Numpy에서는 Boolean 배열을 사용하여 
          # 배열의 인덱스를 지정할 수 있음
      • 배열 정렬 1차원 배열을 생성하고, 오름차순으로 정렬하세요.
        • 송용진의 코드
          import numpy as np
          
          arr1 = np.array([1,3,2]) # 1차원 배열 생성
          arr1.sort() # 오름차순으로 정렬
          print (arr1) # [1 2 3]
      • 유니크 값 찾기 배열 내의 모든 유니크(고유) 값과 해당 값의 출현 횟수를 찾으세요.
        • 송용진의 코드
          import numpy as np
          
          # 배열과 비슷한 리스트의 경우로 고민해본다.
          # my_list = [1,2,2,3,3,3]
          # my_list.count()
          # count와 비슷한 기능을 하는 함수가 있는가?
          
          arr1 = np.array([1,2,2,3,3,3,3]) # 1차원 배열 생성
          
          my_set = set(arr1) #set 함수를 이용해서 유니크(고유) 값들을 찾습니다.
          # print(my_set)
          
          for i in my_set:
              print(f"{i}{np.count_nonzero(arr1 == i)}번 출현합니다.")
              #np.count_nonzero()는 NumPy 배열에서 
              #0이 아닌 요소의 개수를 세는 함수
          
      • 배열 연결 두 개의 1차원 배열을 수평으로 연결하세요.
        • 송용진의 코드
          import numpy as np
          
          arr1 = np.array([1,2,3])
          arr2 = np.array([4,5,6])
          
          # 수평으로 연결
          # res_arr_1 = np.concatenate([arr1,arr2])
          # print(res_arr_1) #[1 2 3 4 5 6]
          
          # 수직으로 연결
          # res_arr_2 = np.concatenate([[arr1],[arr2]])
          # print(res_arr_2)
          '''[[1 2 3]
              [4 5 6]]'''
          '''
          np.concatenate() 함수에서 axis 매개변수는 
          연결할 축을 지정합니다. 
          1차원 배열의 경우에는 축이 하나뿐이므로 
          axis 매개변수에 0 또는 1을 지정할 필요가 없습니다.
          '''
          
          #2차원 이상의 배열의 경우
          arr3 = np.array([[1,2,3],
                           [4,5,6]])
          arr4 = np.array([[7,8,9],
                           [0,1,2]])
          
          # 수평으로 연결
          result_horizontal = np.concatenate((arr3, arr4), axis=1)
          print(result_horizontal)
          
          # 수직으로 연결
          result_vertical = np.concatenate((arr3, arr4), axis=0)
          print(result_vertical)
          
          '''
          넘파이의 concatenate 함수는 
          배열을 연결하는 데 사용됩니다. 
          이 함수는 주어진 축을 따라 배열을 연결하고, 
          연결된 결과를 반환합니다. 
          
          axis 매개변수를 사용하여 연결할 축을 지정할 수 있습니다. 
          예를 들어, axis=0은 배열을 수직으로 연결하고, 
          axis=1은 배열을 수평으로 연결합니다. 
          이 함수는 동일한 차원의 배열에 대해서만 작동합니다.
          '''
profile
개발자

0개의 댓글