3.4.1.6 1차원의 세계: 파이썬 리스트와 수학적 벡터(Vector)
학습목표
math_story의 차원(Dimension) 개념과 파이썬 데이터 구조를 연결합니다. 가장 기초적인 파이썬의 단일 리스트 [ ] 구조가 수학적으로 어떻게 방향성을 지닌 1차원 벡터(Vector)로 매핑되는지, 컴퓨터가 데이터를 어떻게 기찻길(선) 위의 개미처럼 인식하는지 철학적이고 수학적으로 이해합니다.
1. 차원(Dimension)이란 무엇인가?
우리는 흔히 4차원, 11차원이라는 단어를 마법이나 공상과학 영화의 전유물로 생각하지만, 수학과 컴퓨터 과학에서 ‘차원’의 정의는 매우 건조하고 명확합니다.
차원(Dimension): 어떤 공간에서 특정 물체의 위치를 완벽하게 집어내기 위해 구별해야 하는 ‘독립적인 숫자(좌표)’의 개수입니다.
- 0차원 (점): 위치를 설명할 필요가 없는 상태 (숫자 0개)
- 1차원 (선): 기찻길 위의 개미 (위치를 잡기 위해
x라는 거리 숫자 1개 필요) - 2차원 (면): 빙판 위의 스케이터 (좌우
x, 앞뒤y숫자 2개 필요)
파이썬의 가장 기본적인 대괄호 [ ] 리스트는 인덱스 번호표([0], [1], [2]) 단 하나만 있으면 특정 데이터를 정확히 저격할 수 있습니다. 즉, 완벽한 ‘1차원 궤도’ 인 것입니다.
💡 다이어그램 해석: 단일 대괄호 1차원 선(Vector)에서 시작하여, 리스트가 리스트를 낳아 2차원 면(Matrix)이 되고, 다시 그 면을 겹겹이 쌓아 3차원 입체 공간(Tensor)으로 진화하는 파이썬 배열 차원(Depth)의 확장을 보여줍니다.
2. 1차원 배열 = 수학의 벡터(Vector)
단일 대괄호 안에 나열된 숫자들의 모음 [10, 20, 30]을 파이썬에서는 ‘1차원 리스트’라 부르지만, 고등 수학이나 머신 러닝에서는 이를 벡터(Vector)라고 부릅니다.
벡터는 단순히 ‘값을 담아둔 상자’가 아니라, 공간 상의 크기와 방향을 가리키는 화살표 역할을 합니다.
# 1. 일상생활의 데이터 (단순 나열형 1차원 배열)
grocery_prices = [1500, 3000, 1000]
# 2. 물리/공간 수학에서의 벡터 (3D 공간 상의 좌표 점 도착지를 향하는 화살표)
# (x축으로 10, y축으로 5, z축으로 7만큼 뻗어나간 화살표)
velocity_vector = [10, 5, 7]
만약 게임 캐릭터가 2D 공간의 (x: 3, y: 4) 위치에 서 있다면, 이는 [3, 4] 라는 2개의 엘리먼트를 가진 1차원 리스트(길이가 2인 1D 벡터)로 깔끔하게 표현됩니다.
🐍 파이썬 1D 벡터 제어하기
# 방향성을 지닌 1차원 벡터
player_pos = [3, 4]
# 1차원 공간이므로, 인덱스(좌표축) 번호 단 1개만 주면 값을 정확히 추출합니다.
x_coordinate = player_pos[0] # x축 값 (3) 뽑아내기
y_coordinate = player_pos[1] # y축 값 (4) 뽑아내기
print(f"플레이어는 가로 {x_coordinate}, 세로 {y_coordinate} 좌표에 위치합니다.")
3. 왜 인공지능은 1차원을 사랑할까? (선형대수학의 시작)
인간은 이미지를 2차원의 가로/세로 사각형으로 바라봅니다. 하지만 가장 원시적이고 강력한 인공지능 신경망(Deep Learning)의 입구는 무조건 1차원의 일렬로 길게 늘어선 기차 형태(Flattened Vector)만을 받아들입니다.
예를 들어, 28 x 28 픽셀을 가진 손글씨 이미지 데이터 (총 784개의 점)가 있다면, 컴퓨터는 이를 [0, 255, 12, ... ] 처럼 대괄호 하나에 784개의 숫자가 쭉 달린 초거대 길이의 1차원 리스트(784차원 벡터) 로 강제로 펴버린 뒤 신경망에 주입합니다.
우리가 아무렇지 않게 사용하는 기본 파이썬 [] 리스트는, 사실 컴퓨터가 가장 빠르고 완벽하게 계산할 수 있는 선형(Linear) 메모리의 본질 그 자체이며 머신러닝의 가장 기본이 되는 데이터 단위입니다.
다음 장에서는 이렇게 길게 누워 있던 1차원 선(Vector)들을 여러 개 쌓아 올려 평면을 만드는 2차원 행렬(Matrix)의 세계로 차원을 하나 도약해 보겠습니다.