[벡터#2 연산] 덧셈, 뺄셈, 곱셈으로 배우는 실전 데이터 계산
장바구니 계산부터 할인 적용, 매출 분석까지. 벡터 연산으로 엑셀보다 훨씬 빠르게 계산하는 방법을 배웁니다.
워밍업: 이런 적 있으시죠?
쿠팡 장바구니에 사과 3개(각 1000원), 바나나 2개(각 1500원), 우유 1개(2500원) 담았어요. 총 얼마일까요?
손으로 하나씩 계산하면 시간 걸리죠. 근데 NumPy는 이런 계산을 한 줄로 끝내요.
왜 벡터 연산을 배워야 할까?
쿠팡에서 장을 보다가 "어? 이거 다 담으면 총 얼마지?" 하고 계산기 두드려본 경험 있으시죠?
사과 3개에 바나나 2개, 우유 1개... 하나하나 계산하기 귀찮으셨을 거예요.
엑셀로 작업하실 때도 마찬가지예요. 100개 행에 같은 수식을 복사하고, 드래그하고, 다시 확인하고...
"이거 더 쉬운 방법 없나?" 싶으셨죠? 바로 그 해답이 벡터 연산입니다.
NumPy 벡터 연산은 정말 신기해요. 여러 데이터를 한 줄로 빠르게 처리합니다.
우리 일상에서 쓰이는 벡터 연산
- 마트 장보기: 장바구니에 담긴 물건들 가격 합계 계산
- 세일 기간: "전품목 20% 할인!" 할 때 모든 가격 계산
- 자영업 매출: "이번 달이 지난 달보다 얼마나 올랐지?" 비교 분석
- 넷플릭스 추천: 내 취향과 비슷한 사람 찾기 (유사도 계산)
벡터 덧셈 - 합계 계산의 기본
벡터 덧셈은 생각보다 간단해요. 같은 위치의 숫자끼리 더하면 됩니다.
예를 들어볼게요. 3개 지점을 운영하는 사장님이라고 상상해보세요.
실전 예제: 우리 가게 1~2월 매출 합계 구하기
강남점, 홍대점, 신촌점 1월 + 2월 매출을 한번에 계산
강남점 1월에 100만원, 2월에 120만원 벌었어요. 총 220만원이죠?
홍대점은 1월 150 + 2월 160 = 310만원.
신촌점은 1월 200 + 2월 180 = 380만원.
엑셀이라면 각 지점마다 수식 입력하고, 드래그하고... 번거롭죠.
하지만 NumPy는 딱 한 줄이면 끝입니다: jan_sales + feb_sales
이런 곳에 써먹을 수 있어요:
- 월급 계좌 + 적금 계좌 = 내 전체 자산은?
- 월요일 운동 30분 + 화요일 45분 + ... = 이번 주 총 운동시간은?
- A팀 판매량 + B팀 판매량 = 우리 회사 총 판매량은?
벡터 뺄셈 - "얼마나 늘었지?" 비교하기
자영업 하시는 분들이 가장 궁금해하는 게 뭘까요? 바로 "이번 달이 지난 달보다 얼마나 더 벌었지?"예요.
다이어트 중이라면 "어제보다 몸무게가 얼마나 줄었지?" 궁금하시죠?
이럴 때 바로 벡터 뺄셈을 쓰면 됩니다. 간단해요!
실전 예제: 이번 달 판매량, 지난 달보다 얼마나 늘었을까?
이번 달 - 지난 달 = 증감량 한눈에 파악
제품 A는 지난 달 50개 → 이번 달 60개, +10개 증가했네요!
제품 B는 80개 → 70개, -10개 감소... 왜 줄었는지 분석이 필요하겠어요.
제품 C는 120개 → 140개, +20개 대박! 뭔가 잘되고 있는 상품이에요.
이렇게 this_month - last_month 한 줄이면 전체 제품의 증감을 한눈에 볼 수 있어요.
이런 데 유용해요:
- 다이어트 기록: 어제 체중 - 오늘 체중 = 얼마나 빠졌나?
- 주식 투자: 어제 종가 - 오늘 종가 = 손실인가 이익인가?
- 운동 기록: 이번 주 - 지난 주 = 얼마나 더 열심히 했나?
- AI 모델: 예측값 - 실제값 = 오차가 얼마나 되나? (모델 평가)
곱셈 - 장보기 계산의 필수템
마트 가서 장 보실 때를 떠올려보세요.
사과 3개 담았는데 개당 1,000원이면? 3,000원이죠.
바나나 2개에 1,500원이면? 3,000원.
이런 "개수 × 가격" 계산을 한번에 처리하는 게 바로 Element-wise 곱셈이에요.
어렵게 들리지만, 그냥 곱셈이라고 생각하시면 돼요!
실전 예제: 오늘 장보기 총 얼마 나왔지?
장바구니 담긴 물건들 금액 한번에 계산하기
사과 3개 × 1,000원 = 3,000원
바나나 2개 × 1,500원 = 3,000원
오렌지 5개 × 800원 = 4,000원
카드 긁을 금액: 10,000원
마트에서 계산대 줄 서기 전에 미리 계산해보고 싶을 때, quantities * prices 이 한 줄이면 됩니다!
엑셀로 하나하나 곱해서 더할 필요 없어요.
스칼라 곱셈 - "전품목 20% 할인!" 한번에 계산하기
백화점 세일 기간에 "전품목 20% 할인!" 팻말 보신 적 있죠?
10,000원짜리는 8,000원, 15,000원짜리는 12,000원... 하나하나 계산하려면 머리 아프잖아요.
이럴 때 스칼라 곱셈을 쓰면 됩니다.
"모든 가격에 0.8 곱하기!" 이 한 번이면 끝이에요.
실전 예제: 세일 기간, 할인가 한번에 계산하기
전품목 20% 할인 = 모든 가격 × 0.8
10,000원 → 8,000원 (2,000원 아낌!)
15,000원 → 12,000원 (3,000원 아낌!)
20,000원 → 16,000원 (4,000원 아낌!)
25,000원 → 20,000원 (5,000원 아낌!)
엑셀로 하나하나 계산하지 마세요. prices * 0.8 이 한 줄이면 끝!
4개든 100개든 똑같이 빠르게 처리돼요.
이런 데 유용해요:
- 해외여행: 달러 가격 × 1,300원 = 한국 돈으로 얼마?
- 사업자: 물건값 × 1.1 = VAT 10% 포함한 최종 가격은?
- 다이어트 앱: 오늘 먹은 음식 × 칼로리 = 총 섭취 칼로리는?
- AI 학습: 데이터를 0~1 사이로 정규화 (전처리)
내적 - "나랑 비슷한 사람 찾기"
넷플릭스 보다가 "이 영화 좋아하시는 분들이 ○○○도 봤어요" 추천 받아보셨죠?
어떻게 내 취향과 비슷한 사람을 찾을까요? 바로 내적을 씁니다.
조금 어렵게 들릴 수 있는데, 쉽게 설명할게요.
두 사람이 똑같은 영화들에 별점을 매겼다고 생각해보세요. 그 별점들을 곱해서 다 더하면 "유사도"가 나와요.
실전 예제: 영화 취향이 얼마나 비슷한가?
두 사람의 영화 평점으로 취향 유사도 계산하기
A씨와 B씨가 같은 영화 5개를 봤어요.
액션 영화: A씨 5점, B씨 4점 → 5×4 = 20
코미디: A씨 3점, B씨 4점 → 3×4 = 12
로맨스: A씨 4점, B씨 3점 → 4×3 = 12
공포: A씨 2점, B씨 1점 → 2×1 = 2
SF: A씨 5점, B씨 5점 → 5×5 = 25
다 더하면? 20 + 12 + 12 + 2 + 25 = 71점
이 숫자가 클수록 두 사람 취향이 비슷하다는 뜻이에요!
넷플릭스는 이렇게 "나와 비슷한 사람들이 본 영화"를 찾아서 추천해주는 거예요.
신기하죠? 이게 바로 AI 추천 시스템의 핵심 원리입니다.
이런 곳에도 쓰여요:
- 유튜브: 내가 본 영상과 비슷한 영상 추천
- 쿠팡: 나와 비슷한 사람들이 구매한 상품 추천
- 스포티파이: 내 음악 취향과 비슷한 플레이리스트
- ChatGPT: 단어의 의미 유사도 계산
종합 예제 - 다이어트 앱처럼 운동 기록 분석하기
자, 이제 지금까지 배운 걸 다 써먹어볼까요?
다이어트 중이고, 매일 운동 시간을 기록한다고 생각해보세요.
실전 예제: 이번 주 운동, 지난 주보다 얼마나 열심히 했나?
지난 주와 비교하고, 총 시간도 구하고, 평균도 계산하기
지난 주: 월 30분, 화 45분, 수 쉼, 목 60분, 금 40분
이번 주: 월 40분, 화 50분, 수 30분, 목 70분, 금 45분
궁금한 거 많죠? 질문에 한번에 답해볼게요:
- Q1. 오늘은 어제보다 얼마나 더 했지?
→ 뺄셈:this_week - last_week
→ 답: 월 +10분, 화 +5분, 수 +30분, 목 +10분, 금 +5분 - Q2. 이번 주 총 몇 분 운동했지?
→ 합계:this_week.sum()
→ 답: 235분 (약 4시간!) - Q3. 하루 평균은?
→ 평균:this_week.mean()
→ 답: 47분
엑셀로 하려면 여러 셀에 수식 입력하고, 복사하고, 참조하고... 머리 아프죠.
NumPy로는 몇 줄이면 끝입니다. 이게 바로 Python의 힘이에요!
정리 - 오늘 배운 것 복습
자, 오늘 우리가 뭘 배웠는지 정리해볼까요?
- 덧셈: 1월 매출 + 2월 매출 = 총 매출
- 뺄셈: 이번 달 - 지난 달 = 얼마나 늘었나?
- 곱셈: 사과 3개 × 1,000원 = 장바구니 금액
- 전체 할인: 전품목 × 0.8 = 20% 할인가
- 유사도: 나랑 비슷한 사람 찾기 (넷플릭스 추천)
왜 NumPy를 쓰면 좋을까요?
- 엑셀 수식 복사 안 해도 됨 (한 줄로 끝)
- 1,000개 데이터도 1초 안에 처리
- 실수할 일이 없음 (자동으로 계산)
- 나중에 AI, 데이터 분석 할 때 필수!
처음엔 어려워 보였는데, 막상 해보니 그렇게 어렵지 않죠?
사실 우리가 일상에서 하는 계산을 코드로 옮긴 것뿐이에요.
다음 글 예고
다음 시간엔 더 재밌는 걸 해볼 거예요!
"사과 2개 + 바나나 3개 = 8,000원. 사과는 얼마?"
이런 문제, 중학교 때 연립방정식으로 풀었던 거 기억나시죠?
손으로 풀면 5분 걸리는데, Python으로는 딱 1줄이면 답이 나옵니다.
가격 역산, 레시피 변환, 예산 배분... 실생활에서 엄청 유용해요.
다음 글도 기대해주세요!
다음 글에서 또 만나요!
