Python/Numpy

[Python] 파이썬 numpy 행렬 생성 - arange, linspace

나비🦋 2024. 4. 19. 23:20
반응형

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

지난 포스팅에서는 파이썬 난수 생성 메소드에 대해 소개드렸는데요, 이번 포스팅부터는 행렬과 관련있는 numpy 메소드들을 차례대로 다뤄보려고 합니다.

(행렬(matrix) 관련된 파이썬 numpy 포스팅은 총 7편으로 계획하고 있습니다! 그다음부터는 matplotlib 라이브러리 시리즈로 넘어가려고 합니다.)

이번에 다뤄볼 메소드는 행렬 생성과 관련된 arange, linspace 메소드입니다. 두 메소드는 기능적으로는 매우 비슷하지만, 파라미터 설정 방법에서 약간의 차이를 보입니다.

np.arange : 주어진 간격에 따라 균일한 array를 생성합니다.
np.linspace : 지정한 구간을 균일한 간격으로 나누는 array를 생성합니다.

두 메소드 중에서는 linspace가 더 많은 파라미터 개수를 가집니다. endpoint, retstep이라는 파라미터에 bool 값을 넣어주면 출력 결과가 조금씩 달라집니다.

아래서 예제 코드와 함께 더 자세히 설명드려 보겠습니다.

np.arange

import numpy as np

A = np.arange(4)
B = np.arange(1, 5)
C = np.arange(2, 8, 2)

print(A)
print(B)
print(C)
[0.0, 1.0, 2.0, 3.0]
[1.0, 2.0, 3.0, 4.0]
[2.0, 4.0, 6.0]


A 배열과 같이 인수를 하나만 입력한 경우, [0, 해당 인수) 구간에서 간격 1로 ndarray를 생성합니다. 0이상 4미만 구간에서 간격 1의 행벡터가 생성된 것을 확인할 수 있습니다.
B 배열과 같이 인수를 2개 입력한 경우, [인수1, 인수2) 구간에서 간격 1로 ndarray를 생성합니다. 1이상 5미만 구간에서 마찬가지로 간격 1인 행벡터가 생성되었습니다.
C 배열과 같이 인수 3개를 입력한 경우, [인수1, 인수2) 구간에서 간격 (인수3)으로 ndarray를 생성합니다. 2이상 8미만 구간에서 간격 2로 요소 3개짜리 행벡터가 생성되었습니다.


np.linspace

import numpy as np

A = np.linspace(1.0, 2.0, num=5)
B = np.linspace(1.0, 3.0, num=5)

print(A)
print(B)
[1.0, 1.25, 1.5, 1.75, 2.0]
[1.0, 1.5, 2.0, 2.5, 3.0]

별도로 bool 파라미터를 설정하지 않은 베이직한 예제입니다.

A에서는 1.0과 2.0을 양끝으로 하고, 숫자 5개가 되도록 간격을 일정하게 나눈 ndarray를 출력합니다.
B에서는 1.0과 3.0을 양끝으로 하고, 숫자 5개가 되도록 마찬가지로 출력합니다.


이제 endpoint, retstep 파라미터를 설정해 보겠습니다.

import numpy as np

C = np.linspace(1.0, 2.0, num=5, endpoint=False)
D = np.linspace(1.0, 2.0, num=5, endpoint=True)
E = np.linspace(1.0, 2.0, num=5, endpoint=True, retstep=True)

print(C)
print(D)
print(E)

#endpoint 파라미터의 default값은 True
[1.0, 1.2, 1.4, 1.6, 1.8]
[1.0, 1.25, 1.5, 1.75, 2.0]
(array([1.0, 1.25, 1.5, 1.75, 2.0]), 0.25)

endpoint 파라미터를 True로 설정하면 오른쪽 끝값을 포함하여 구간을 나눕니다. 따로 설정하지 않으면 기본적으로 True로 작동합니다.
반면, endpoint를 False로 설정했을 때는 오른쪽 끝값을 제외하여 구간을 나눕니다.

retstep은 False가 기본값이고, True로 설정한 경우 간격(step)을 함께 출력합니다. 예제에서 E 벡터는 0.25씩 커지므로 0.25를 함께 반환합니다.


여기까지 해서 파이썬 numpy의 행렬 생성 메소드 arange, linspace에 대해 알아보았습니다. 긴 글 읽어주셔서 감사드려요 ✨

반응형