Python/Numpy

[Python] 파이썬 numpy 행렬 생성 - ones, ones_like, zeros, zeros_like, identity

나비🦋 2024. 4. 20. 18:55
반응형

안녕하세요! 나비입니다 🦋

이번 포스팅에서는 지난 포스팅에 이어서 행렬 생성과 관련한 파이썬 numpy 메소드를 다룰 거예요.

특히, 원소가 0 또는 1로만 되어 있는 행렬을 쉽게 생성하는 5가지 메소드에 대한 소개글을 준비해 보았습니다.

0과 1로만 이루어진 행렬은 이산수학에서 그래프를 나타내는 인접행렬에 사용되거나, 연산을 편리하게 해주는 용도로 다방면에서 쓰이는데요, 그렇기 때문에 np.array 메소드로 똑같이 만들 수 있음에도 불구하고 메소드가 따로 존재하는 것입니다.

ones, ones_like, zeros, zeros_like, identity 이렇게 5가지 메소드 차례대로 알아보도록 하겠습니다!



np.ones, np.ones_like

ones, ones_like는 1로만 채워진 array 또는 matrix를 생성하는 메소드입니다. 아래서 구체적인 코드를 설명할게요.

import numpy as np

A = np.ones(4)
B = np.ones((2,2), dtype=int)
C = np.ones_like([[2,3,4], [3,4,5]])

print(A)
print(B)
print(C)
[1.0, 1.0, 1.0, 1.0]
[[1, 1], [1, 1]]
[[1.0, 1.0, 1.0], [1.0, 1.0, 1.0]]

A처럼 ones의 인수를 정수 하나로만 하였을 경우, 그 개수만큼 1로 꽉 채워진 array를 출력합니다.
B처럼 ones의 첫 번째 인수를 튜플로 하였을 경우, 해당 차원의 matrix를 출력합니다. 이때, dtype을 int(정수, integer)로 설정해주면 float형의 아닌 integer형으로 출력해줍니다. 이는 A의 경우에도 마찬가지입니다.
C에서는 ones_like를 사용했는데요, ones_like의 인수에 들어간 행렬(또는 벡터)과 같은 크기, 같은 차원을 가지면서 1로 채워진 행렬을 출력합니다.



np.zeros, np.zeros_like

zeros, zeros_like는 ones, ones_like와 동일한 원리로 0으로만 채워진 array/matrix를 생성하는 메소드입니다.

import numpy as np

A = np.zeros(3, dtype=int)
B = np.zeros((2,2))
C = np.zeros_like([[4,5,6], [1,3,4]])

print(A)
print(B)
print(C)
[0, 0, 0]
[[0.0, 0.0], [0.0, 0.0]]
[[0.0, 0.0, 0.0], [0.0, 0.0, 0.0]]

숫자만 0으로 바뀌었을 뿐, 기능적인 부분은 ones, ones_like와 동일하므로 구체적인 설명은 생략하겠습니다.



np.identity

identity는 선형대수학에서 단위행렬을 의미합니다.

단위행렬은 대각 성분이 모두 1이고, 나머지 성분은 0인 대각행렬의 일종입니다.

아래서 예제를 보여드리겠습니다.

import numpy as np

A = np.identity(2)
B = np.identity(3)

print(A)
print(B)
[[0.0, 1.0]
[1.0, 0.0]]
[[0.0, 0.0, 1.0]
[0.0, 1.0, 0.0]
[1.0, 0.0, 0.0]]


identity 메소드는 기본적으로 정수인 인수를 하나 요구합니다.
2를 입력한 경우 2x2 단위행렬을, 3을 입력한 경우 3x3 단위행렬을 출력해줍니다.


여기까지 0과 1을 원소로 가지는 행렬을 생성하는 5가지 메소드를 모두 소개해드렸습니다. 긴 글 읽어주셔서 감사합니다! ✨

반응형