#1 Weekly Paper _Q1(Numpy)

Heidi J.·2026년 2월 6일

Weekly_Paper

목록 보기
1/37
post-thumbnail

먼저 공감되는 짤로 시작-

NumPy (= Numerical + Python)

1. numpy 공식문서

https://numpy.org/doc/stable/user/absolute_beginners.html

2. Numpy 설치

  • 구글 코랩의 경우, 코랩에 기본적으로 설치가 되어있는 라이브러리
  • 코랩이 아닌 환경에서는 pip를 이용하여 간단하게 최신버전 설치 가능
    (본인은 구글 코랩 유저로 설치는 생략)
  • 파이썬에서 사용하는 과학계산용 오픈소스 라이브러리 (다른 사람이 작성한 코드(무료배포)를 활용해서 작업함

3. NumPy?

  • '수치적인 파이썬'이라는 뜻으로,
    파이썬에서 대규모 다차원 배열과 행렬 연산, 고성능 수치 계산을 위해 설계된 핵심 라이브러리
  • 파이썬의 느린 연산속도를 보완
    - 파이썬이 가지고 있는 기본 연산 도구는 속도가 느림
    • 속도가 몇 십, 몇 백배 차이가 남

4. 기본 사용법

  • numpy는 파이썬이 자체적으로 가지고 있지 않음
  • 그래서,
    import 함수를 사용해서 numpy라는 오픈소스 라이브러리를 가져오며, as np로 줄여서 사용
  • 👇numpy 가져오는 방법
    import numpy as np

5. numpy array

  • numpy의 array는 동일한 타입으로만 이루어짐 (numpy의 연산을 매우 빠르게 진행하기 위한 것)

  • numpy array는 여러가지 기본 array 생성 방법이 있음

  • 배열은 values 및 원시 데이터에 대한 정보, 요소를 찾는 방법, 요소를 해석하는 방법, 인덱싱할 수 있는 요소 그리드가 있음

    5.1. array 만들기

    import numpy as np
    range_array = np.arange(10)
    print(range_array)
    [0 1 2 3 4 5 6 7 8 9]

    👇와 같이 하나하나 입력해서 사용할 수도 있음

    import numpy as np
    a = np.arange([1, 2, 3, 4, 5])
    print(a)
    [1 2 3 4 5]

    ❗위에서 출력한 a의 타입을 확인해보면

    <class 'numpy.ndarray'>

    -배열 array 데이터 타입인 것을 확인할 수 있음
    -배열은 파이썬의 리스트 데이터 타입에 기반한 것이며, 리스트보다 더 빠른 장점이 있음 (특히 숫자 데이터를 다룰 때 몹시 빠름)
    -numpy는 한가지 데이터 타입만 넣을 수 있기 때문에 연산속도가 빠름
    -astype()을 사용하여 형변환

    data = [1, 2, "3"]
    my_arr = np.array(data)
    my_arr
    array(['1', '2', '3'], dtype='<U21')
    # dtype='<U21': 문자열 데이터를 의미
    # ' ': 한 가지 데이터 타입으로 자동 통일되는데 위는 문자열로 자동 변경됨
    # numpy에서 데이터 타입 변경 (저장 작업 필요)
    my_arr = my_arr.astype("float")
    my_arr
    array([1., 2., 3.])

    5.2. array의 추가 및 삭제

    5.2.1. array의 추가

    5.2.1.1. np.append(arr, values, axis=None)

    ++ 배열 끝에 값을 추가
    ++ axis 미지정 시 1차원으로 평탄화 후 추가

  • 1차원 배열 꿑에 추가

    arr1 = np.array([1, 2, 3])
    new_arr1 = np.append(arr1, [4, 5])
    new_arr1
    array([1, 2, 3, 4, 5])
  • 2차원 배열 열 추가 (axis=1)

    arr2 = np.array([[1, 2], [3, 4]])
    col = np.array([[5], [6]])
    new_arr2 = np.append(arr2, col, axis=1)
    new_arr2
    array([[1, 2, 5],
        [3, 4, 6]])
    5.2.1.2. np.insert(arr, obj, axis=None)

    ++ 지정된 인덱스(obj)에 값 삽입

  • 2차원 배열 행 삽입 (np.insert)

    new_arr3 = np.insert(arr2, 1, [9, 9], axis=0)
    new_arr3
    array([[1, 2],
        [9, 9],
        [3, 4]])
    5.2.1.3. np.concatenate((a1, a2), axis=0)

    ++ 두 개 이상의 배열을 연결

  • 1차원 배열 연결

    import numpy as np
    arr1 = np.array([1, 2, 3])
    arr2 = np.array([4, 5])
    result = np.concatenate((arr1, arr2))
    print(result)
    [1 2 3 4 5]
  • 2차원 배열 행/열 결합

    a = np.array([[1, 2], [3, 4]])
    b = np.array([[5, 6]])

    (수직 결합 axis=0)

    vertical_stack = np.concatenate((a, b), axis=0)
    print(vertical_stack)
    [[1 2]
     [3 4]
     [5 6]]

    (수평 결합 axis=1, shape이 일치해야하므로 형태를 (2, 1)로 변경 필요)

    shape_table = b.T
    horizontal_stack = np.concatenate((a, shape_table), axis=1)
    print(horizontal_stack)
    [[1 2 5]
     [3 4 6]]

    ❗핵심 특징❗

  • 튜플 사용: 결합할 배열들을 () 안에 튜플 또는 리스트로 묶어 전달해야 함

  • shape 일치: 결합하려는 축(axis)을 제외한 나머지 차원의 크기가 동일해야 함

  • 반환값: 원본을 수정하지 않고 새로운 배열을 반환

    5.2.2. array의 삭제

    5.2.2.1. np.delete(arr, obj, axis)
    • numpy 배열의 요소나 행/열을 삭제할 때

    • 원본의 변경없이 삭제된 새로운 배열을 반환

    • axis=0: 행 삭제, axis=1: 열 삭제

    • obj에 인덱스(순번)나 슬라이싱을 전달하여 지정된 위치 삭제 가능
      ❗- axis를 지정하지 않으면 배열이 1차원으로 펼쳐진 후 삭제되므로 행/열 삭제 시 axis를 반드시 명시해야 함

      import numpy as np

      (2차원 배열 생성 후 삭제)

      # 배열 생성
      arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
      
      # 1행(두 번째 행) 삭제
      result = np.delete(arr, 1, axis=0)
      
      result
      array([[1, 2, 3],
             [7, 8, 9]])
      # arr 배열에서 0번 열 삭제
      result_col = np.delete(arr, 0, axis=1)
      
      result_col
      array([[2, 3],
             [5, 6],
             [8, 9]])

      ❗핵심 사용법❗

    • 특정 위치 요소 삭제: `new_arr = np.delete(arr, index)

    • 행 삭제(1차원화 주의): np.delete(arr, 1, axis=0) (1번 인덱스 행 삭제

    • 열 삭제: np.delete(arr, 1, axis=1) 1번 인덱스 열 삭제

    • 여러 인덱스 삭제: np.delete(arr, [0, 2], axis=0) 0번과 2번 인덱스 행 삭제

    5.3. array의 모양과 크기

  • ndarray.ndim: -배열의 축 수(차원) 또는 치수를 알려줌

  • ndarray.size: 배열의 총 요소 수를 알려줌 (배열 모양의 요소의 곱)

  • ndarray.shape: -정수 튜플을 표시
    -배열의 각 차원을 따라 저장된 요소
    -데이터의 행과 열 정보를 확인 (행, 열)
    ex. 2개의 행과 3개의 열이 있는 2차원 배열인 경우 배열의 모양은 (2, 3)

  • arr.reshape(): array 모양 변경

6. 인덱싱(indexing)과 슬라이싱(slicing)

6.1. 인덱싱(indexing)

# indexing
data = np.array([1, 2, 3, 4, 5])
data[1]
2

6.2. 슬라이싱(slicing)

# slicing
data = np.array([1, 2, 3, 4, 5])
data[0:2]   # [start:end:step]
array([1, 2])

Der Weg ist das Ziel.
과정이 곧 목표다.

by Heidi J. 꼬꼬마 데분가💜

profile
꼬꼬마 데분가😎

0개의 댓글