2차원 배열이란
2차원 배열은 숫자나 문자를 정리해서 저장할 수 있는 표와 같은 것이다. 엑셀이나 구글 스프레드시트를 생각해보면 쉽게 이해할 수 있다. 표의 각 칸에는 하나의 값이 들어가고, 이 값들은 행과 열로 구분된다.
2차원 배열의 예시
예를 들어, 다음과 같은 표가 있다고 하자:
0열 1열 2열
0행 | 1 | 2 | 3 |
1행 | 4 | 5 | 6 |
2행 | 7 | 8 | 9 |
이 표는 3개의 행과 3개의 열로 이루어져 있다. 각 칸에는 숫자가 들어있다. 이 표를 2차원 배열이라고 부른다.
파이썬에서 2차원 배열 만들기
파이썬에서는 리스트라는 것을 사용해서 2차원 배열을 만들 수 있다. 리스트는 여러 개의 값을 한 곳에 모아놓는 방법이다. 2차원 배열을 만들기 위해서는 리스트 안에 리스트를 넣으면 된다.
array = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
위의 코드는 3x3 크기의 2차원 배열을 만든다. 첫 번째 리스트 [1, 2, 3]는 첫 번째 행을 나타내고, 두 번째 리스트 [4, 5, 6]는 두 번째 행을 나타낸다.
2차원 배열에서 값 꺼내기
2차원 배열에서 특정 값을 꺼내려면 행과 열의 위치를 알려줘야 한다. 예를 들어, 첫 번째 행과 두 번째 열에 있는 값을 꺼내려면 다음과 같이 하면 된다.
value = array[0][1] # 결과는 2
여기서 array은 첫 번째 행(0행)과 두 번째 열(1열)에 있는 값을 의미한다. 파이썬에서는 숫자를 셀 때 0부터 시작한다는 점을 기억하자.
2차원 배열에서 부분 배열 꺼내기
2차원 배열에서 여러 개의 값을 한꺼번에 꺼내는 것도 가능하다. 이를 슬라이싱이라고 한다. 예를 들어, 첫 번째와 두 번째 행을 꺼내려면 다음과 같이 한다.
rows = array[0:2] # 결과는 [[1, 2, 3], [4, 5, 6]]
여기서 array[0:2]는 첫 번째 행(0행)과 두 번째 행(1행)을 의미한다.
2차원 배열에서 인덱싱과 슬라이싱을 활용하면 특정 행, 열 또는 부분 배열을 쉽게 추출할 수 있다. 이를 통해 데이터 분석, 이미지 처리 등 다양한 분야에서 효율적으로 데이터를 다룰 수 있다. 아래 예제는 NumPy 라이브러리를 사용하여 2차원 배열을 처리하는 방법을 보여준다.
예시: 2차원 배열 생성 및 인덱싱, 슬라이싱
먼저, NumPy를 사용하여 2차원 배열을 생성하고, 인덱싱과 슬라이싱을 통해 특정 부분을 추출하는 예제를 살펴보자.
import numpy as np
# 2차원 배열 생성
array = np.array([
[1, 2, 3, 4, 5],
[6, 7, 8, 9, 10],
[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20]
])
# 배열 출력
print("원본 배열:")
print(array)
인덱싱 예제
특정 행과 열의 요소를 추출하는 방법이다.
# 두 번째 행의 세 번째 요소 (8) 추출
element = array[1, 2]
print("\\\\n두 번째 행의 세 번째 요소:", element)
# 마지막 행의 마지막 요소 (20) 추출
element = array[-1, -1]
print("마지막 행의 마지막 요소:", element)
슬라이싱 예제
배열의 특정 부분을 추출하는 방법이다.
# 첫 두 행과 첫 세 열 추출
sub_array = array[:2, :3]
print("\\\\n첫 두 행과 첫 세 열:")
print(sub_array)
# 두 번째 행부터 끝까지, 세 번째 열부터 네 번째 열까지 추출
sub_array = array[1:, 2:4]
print("\\\\n두 번째 행부터 끝까지, 세 번째 열부터 네 번째 열까지:")
print(sub_array)
# 모든 행에서 두 번째 열만 추출
column = array[:, 1]
print("\\\\n모든 행에서 두 번째 열:")
print(column)
# 모든 열에서 세 번째 행만 추출
row = array[2, :]
print("\\\\n모든 열에서 세 번째 행:")
print(row)
'job > python' 카테고리의 다른 글
리스트와 튜플의 사용 시점을 결정하는 기준 (0) | 2024.08.07 |
---|---|
리스트와 튜플의 차이 (0) | 2024.08.07 |
문자열: 인덱싱, 슬라이싱 (0) | 2024.08.07 |
숫자형: 복합연산자 (0) | 2024.08.07 |
02장 파이썬 프로그래밍의 기초, 자료형 (0) | 2024.08.07 |