Python/Numpy

[Python] 파이썬 numpy 행렬 생성과 반복 - repeat, tile

나비🦋 2024. 4. 24. 16:09
반응형

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

이번 포스팅에서는 행렬 생성과 관련한 파이썬 numpy 메소드를 소개드릴 예정입니다.

지난/지지난 포스팅에서도 행렬 생성 메소드인 arange, linspace, ones, zeros 등등에 대해 소개했는데요, 이번 포스팅은 행렬 생성 마지막 포스팅으로, repeat과 tile이라는 메소드를 다뤄보려 합니다.

두 함수 모두, array의 일부 또는 전부를 “반복”한다는 점에서 기능적으로 유사합니다.

repeat : ndarray의 요소를 지정한 횟수만큼 반복합니다. axis 파라미터 사용 가능
tile : ndarray의 요소를 지정한 횟수만큼 반복합니다. (타일처럼)

코드 예제를 보면서 더 자세히 설명해 보겠습니다!

np.repeat

import numpy as np

A = np.repeat(2,3)
B = np.repeat([0, 1], 2)

print(A)
print(B)
[2, 2, 2]
[0, 0, 1, 1]

repeat 메소드는 기본적으로 반복할 대상, 반복할 횟수를 입력받습니다.
A에서 실수 2를 3번 반복하면 2를 3개 가지는 행벡터를 출력합니다.
B에서처럼 벡터를 반복할 때에는, 같은 요소끼리 묶어서 반복해줍니다.

import numpy as np

A = np.array([[0,1], [2,3]])

B = np.repeat(A, 2)
C = np.repeat(A, 2, axis=0)
D = np.repeat(A, 2, axis=1)

print(B)
print(C)
print(D)
[0,0,1,1,2,2,3,3]
[[0,1]
 [0,1]
 [2,3]
 [2,3]]
[[0,0,1,1]
 [2,2,3,3]]

axis 파라미터를 사용할 경우에는 행렬(matrix)로 정렬 후 출력합니다.
axis=0인 경우에는 행렬 속 행벡터 자체를 반복하는 반면, axis=1일 때는 행벡터 내의 요소들을 반복하여 출력합니다.
이처럼 axis 파라미터를 이용하여 출력 형태를 적절히 조절할 수 있습니다.



np.tile

tile 함수를 말 그대로, 타일처럼 반복한다는 뜻입니다. 마치 화장실 타일처럼, 벡터 또는 숫자를 차곡차곡 쌓습니다.

import numpy as np

A = np.array([0,1])

B = np.tile(A, 2)
C = np.tile(A, (3,2))

print(B)
print(C)
[0,1,0,1]
[[0,1,0,1]
 [0,1,0,1]
 [0,1,0,1]]

따로 axis 같은 파라미터를 사용하지 않아도 출력 형태를 편하게 조절할 수 있습니다. 예시에서는 (2,2) 형태로 벡터를 쌓는 것만 보여드렸지만, 필요에 따라 (3,4) (5,10)처럼 다양하게 설정할 수도 있습니다.

반응형