from palette import colorful_colors

[Numpy] arange(), concatenate() 본문

CS 학부과목/Python

[Numpy] arange(), concatenate()

colorful-palette 2023. 1. 29. 22:17

<목차>
1. 증가하는 배열 만들기, 섞기
1-1. arange()
1-2. shuffle()
2. 배열 연결함수
2-1.concatenate()
2-2. column_stack()

1. 증가하는 배열 만들기, 섞기

1-1. arange()

넘파이에는 파이썬의 range() 함수처럼 증가하는 ndarray 인덱스를 간단히 만들 수 있는 arrange()함수가 있다.
np.arrange()의 구조는 range()와 동일하게 생각하면 된다!

np.arrange() 예시:

print(np.arange(3))		# np.arrange(멈추는 숫자) -> 0부터 2까지
print(np.arrange(1, 3))		# np.arrange(시작 숫자, 멈추는 숫자)
print(np.arrange(1, 3, 0.2))	#np.arrange(시작 숫자, 멈추는 숫자, 간격)


# 출력결과:
# [0 1 2]
# [1 2]
# [1. 1.2 1.4 1.6 1.8 2. 2.2 2.4 2.6 2.8]

1-2. shuffle()

증가하는 정수 배열을 만들었다면 요소를 섞어보자. 넘파이에선 np.random 모듈 안에 shuffle()을 제공한다.
주로 데이터셋을 만들고 랜덤으로 섞을때 사용한다.

np.shuffle() 예시:

index = np.arange(10)
np.random.shuffle(index)
print(index)


# 출력결과:
# [1 2 9 3 4 5 7 8 6 0]



(아마 출력값이 위와 다르게 출력될 것이다)
일반적으로 shuffle() 함수를 사용하면 실행할때마다 값이 랜덤으로 바뀐다.
하지만 실행할때마다 랜덤값이 고정으로 결정되게 만들 수도 있는데, 시드를 고정해주면 된다.


np.random.seed() 사용 예시:

np.random.seed(42)
index = np.arange(10)
np.random.shuffle(index)
print(index)


# 출력결과:
# [8 1 5 0 7 2 9 4 3 6]

이번엔 필자와 똑같은 출력 값을 얻을 수 있을 것이다.
랜덤 seed를 42번으로 고정해서 그렇다.


2. 배열 연결함수

넘파이에는 2가지의 배열 연결함수가 있다. 차이점은 차원의 유지 여부다.
np.concatenate: row(행)로 붙인다. 선택한 축(axis)를 기준으로 두 개의 배열을 연결한다.
np.stack: column(열)으로 붙인다. 파이썬의 zip함수를 대체한다.차원이 늘어난다.
 - axis = 0: 옆(오른쪽)으로 붙인다 (디폴트값)
 - axis = 1: 아래로 붙인다



예시를 위한 2차원 ndarray 배열 만들기

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


# 출력결과:
[[1 2]
[3 4]]
[[5 6]
[7 8]]


예시를 위해 우선 2개의 2차원 배열을 만들어보자.

2-1.concatenate()

concatenate() 예시

#전달받은 리스트를 행으로 붙인다. axis=0이면 밑(세로)으로, axis=1이면 옆(가로)으로 붙인다.
print(np.concatenate((a, b), axis =0))    # 아래(세로)로 붙인다.
print(np.concatenate((a, b), axis = 1))   # 옆(가로)로 붙인다.


# 출력결과:
[[1 2]
 [3 4]
 [5 6]
 [7 8]]

[[1 2 5 6]
 [3 4 7 8]]



2-2. column_stack()

column_stack() 예시

# 전달받은 리스트를 일렬로 세우고 나란히 연결한다. 연결할 리스트는 튜플로 전달한다. 차원이 증가한다.
print(np.stack((a, b), axis =0))    # 2차원 2개가 3차원으로 합쳐진다.


# 출력결과:
[[[1 2]
  [3 4]]

 [[5 6]
  [7 8]]]





reference, 사진출처: 혼자 공부하는 머신러닝 + 딥러닝