[카테고리:] 미분류

  • Python에서 0 행렬(Zero Matrix) 만들기

    1. 기본적인 0 행렬 생성

    Python에서 0으로 채워진 행렬을 만들 때 가장 간단한 방법은 리스트 컴프리헨션을 활용하는 것이다.

    n = 4
    zero_matrix = [[0 for _ in range(n)] for _ in range(n)]
    print(zero_matrix)
    

    출력:

    [[0, 0, 0, 0], 
     [0, 0, 0, 0], 
     [0, 0, 0, 0], 
     [0, 0, 0, 0]]
    

    이 방식은 n×n 크기의 2차원 리스트를 생성한다.


    2. 다양한 방법으로 0 행렬 만들기

    (1) numpy를 이용한 생성

    import numpy as np
    zero_matrix = np.zeros((4, 4), dtype=int)
    print(zero_matrix)
    

    출력:

    [[0 0 0 0]
     [0 0 0 0]
     [0 0 0 0]
     [0 0 0 0]]
    

    numpy를 활용하면 dtype을 조정할 수도 있어 부동소수점이 아닌 정수형 행렬도 쉽게 만들 수 있다.

    (2) pandas를 이용한 0 행렬 생성

    import pandas as pd
    zero_df = pd.DataFrame(0, index=range(4), columns=range(4))
    print(zero_df)
    

    출력:

       0  1  2  3
    0  0  0  0  0
    1  0  0  0  0
    2  0  0  0  0
    3  0  0  0  0
    

    이 방식은 데이터 분석에서 활용도가 높다.


    3. 주의할 점: 리스트 복사 이슈

    다음과 같이 * 연산자를 이용해 0 행렬을 만들면 예기치 않은 오류가 발생할 수 있다.

    zero_matrix = [[0] * 4] * 4
    zero_matrix[0][0] = 1
    print(zero_matrix)
    

    출력:

    [[1, 0, 0, 0], 
     [1, 0, 0, 0], 
     [1, 0, 0, 0], 
     [1, 0, 0, 0]]
    

    모든 행이 동일한 객체(참조) 를 가리키기 때문에 한 곳을 변경하면 모든 행에 영향을 미친다. 따라서 리스트 컴프리헨션을 사용하는 것이 안전하다.


    4. 0 행렬의 활용 사례

    (1) 그래프 인접 행렬 표현

    n = 5  # 노드 개수
    graph = [[0 for _ in range(n)] for _ in range(n)]
    

    그래프에서 인접 행렬을 사용하여 엣지를 저장할 수 있다.

    (2) 이미지 데이터 초기화

    numpy.zeros()를 이용하면 2D 또는 3D 이미지 데이터를 저장할 기본 행렬을 생성할 수 있다.

    image = np.zeros((256, 256, 3), dtype=np.uint8)  # 256x256 크기의 검은색 이미지
    

    결론

    • 0 행렬을 만들 때 리스트 컴프리헨션, numpy, pandas 등 다양한 방법을 사용할 수 있다.
    • 잘못된 리스트 복사로 발생하는 문제를 피해야 한다.
    • 0 행렬은 그래프 표현, 이미지 데이터 초기화, 행렬 연산 등 다양한 곳에서 활용된다.

    이제 0 행렬을 자유롭게 활용해 보자! 🚀


    😊