🤖

본 콘텐츠의 이미지 및 내용은 AI로 생성되었습니다.

⚠️

본 콘텐츠의 이미지 및 내용을 무단으로 복제, 배포, 수정하여 사용할 경우 저작권법에 의해 법적 제재를 받을 수 있습니다.

이미지 로딩 중...

내적과 외적 완벽 가이드 - 슬라이드 1/7
A

AI Generated

2025. 11. 28. · 14 Views

내적과 외적 완벽 가이드

벡터의 내적과 외적을 초급 개발자도 쉽게 이해할 수 있도록 설명합니다. 코사인 유사도부터 직교 벡터 판별까지, 실무에서 자주 쓰이는 선형대수 개념을 NumPy 코드와 함께 배워봅니다.


목차

  1. 내적 (Dot Product) 정의
  2. 내적의 기하학적 의미
  3. 코사인 유사도
  4. 외적 (Cross Product)
  5. 직교 벡터 판별
  6. NumPy로 내적 계산

1. 내적 (Dot Product) 정의

김개발 씨는 추천 시스템을 개발하다가 "두 벡터의 유사도를 구하라"는 요구사항을 받았습니다. 선배에게 물어보니 "내적을 써보세요"라는 답변이 돌아왔습니다.

내적이 대체 무엇이길래 유사도와 관련이 있는 걸까요?

**내적(Dot Product)**은 두 벡터를 곱해서 하나의 숫자(스칼라)를 얻는 연산입니다. 마치 두 사람의 취향이 얼마나 비슷한지를 점수로 매기는 것과 같습니다.

같은 방향을 바라볼수록 내적 값이 커지고, 반대 방향이면 음수가 됩니다.

다음 코드를 살펴봅시다.

# 내적의 기본 정의: 각 성분끼리 곱한 후 모두 더한다
def dot_product(a, b):
    # a = [a1, a2, a3], b = [b1, b2, b3]일 때
    # 내적 = a1*b1 + a2*b2 + a3*b3
    result = 0
    for i in range(len(a)):
        result += a[i] * b[i]
    return result

# 예제: 두 벡터의 내적 계산
vector_a = [1, 2, 3]
vector_b = [4, 5, 6]
print(dot_product(vector_a, vector_b))  # 1*4 + 2*5 + 3*6 = 32

김개발 씨는 입사 6개월 차 주니어 개발자입니다. 오늘 팀장님이 새로운 과제를 주었습니다.

"우리 쇼핑몰에 상품 추천 기능을 넣어야 해요. 사용자 취향과 비슷한 상품을 찾아주는 거죠." 김개발 씨는 고민에 빠졌습니다.

"비슷하다"는 것을 어떻게 숫자로 표현할 수 있을까요? 옆자리 박시니어 씨가 힌트를 주었습니다.

"벡터의 내적을 알아보세요." 내적이란 정확히 무엇일까요? 쉽게 비유하자면, 내적은 마치 두 사람이 얼마나 같은 방향을 바라보고 있는지 측정하는 것과 같습니다.

두 친구가 나란히 서서 똑같은 방향을 바라보면 점수가 높고, 서로 등을 지고 반대편을 바라보면 점수가 낮아집니다. 수직으로 서 있으면 점수는 정확히 0이 됩니다.

수학적으로 표현하면, 내적은 두 벡터의 각 성분을 곱한 뒤 모두 더하는 연산입니다. 예를 들어 벡터 A가 [1, 2, 3]이고 벡터 B가 [4, 5, 6]이라면, 내적은 1곱하기4 더하기 2곱하기5 더하기 3곱하기6, 즉 4 더하기 10 더하기 18로 32가 됩니다.

여기서 중요한 점이 있습니다. 내적의 결과는 벡터가 아니라 스칼라, 즉 하나의 숫자라는 것입니다.

두 개의 벡터가 들어갔는데 숫자 하나가 나온다니, 처음에는 조금 어색할 수 있습니다. 왜 이런 연산이 필요할까요?

내적은 두 벡터 사이의 관계를 숫자로 표현해줍니다. 두 벡터가 비슷한 방향을 가리키면 내적 값이 커지고, 수직이면 0이 되고, 반대 방향이면 음수가 됩니다.

위의 코드를 살펴보면, for 루프를 돌면서 같은 인덱스의 원소끼리 곱한 값을 result에 누적하고 있습니다. 이것이 내적의 가장 기본적인 구현 방식입니다.

실무에서 내적은 정말 다양한 곳에서 사용됩니다. 추천 시스템에서 사용자와 상품의 유사도를 계산할 때, 검색 엔진에서 문서와 검색어의 관련성을 측정할 때, 심지어 게임에서 캐릭터가 바라보는 방향을 계산할 때도 내적이 등장합니다.

김개발 씨는 고개를 끄덕였습니다. "아, 그래서 내적으로 유사도를 구할 수 있는 거군요!"

실전 팁

💡 - 내적 결과가 양수면 두 벡터가 비슷한 방향, 음수면 반대 방향입니다

  • 두 벡터의 차원(길이)이 같아야 내적을 계산할 수 있습니다

2. 내적의 기하학적 의미

김개발 씨는 내적의 계산법은 이해했지만, 왜 이 값이 "유사도"를 나타내는지 직관적으로 와닿지 않았습니다. 박시니어 씨가 화이트보드에 그림을 그리며 설명을 시작했습니다.

"내적에는 기하학적인 의미가 숨어 있어요."

내적은 두 벡터의 크기와 사이각의 코사인 값을 곱한 것입니다. 수식으로 표현하면 A dot B equals magnitude A times magnitude B times cosine theta입니다.

이 공식 덕분에 내적으로 두 벡터 사이의 각도를 알 수 있습니다.

다음 코드를 살펴봅시다.

import math

def vector_magnitude(v):
    # 벡터의 크기(길이) 계산: 각 성분의 제곱합의 제곱근
    return math.sqrt(sum(x**2 for x in v))

def angle_between_vectors(a, b):
    # 내적 = |a| * |b| * cos(theta)
    # 따라서 cos(theta) = 내적 / (|a| * |b|)
    dot = sum(x*y for x, y in zip(a, b))
    mag_a = vector_magnitude(a)
    mag_b = vector_magnitude(b)
    cos_theta = dot / (mag_a * mag_b)
    # 라디안을 각도로 변환
    angle_rad = math.acos(cos_theta)
    return math.degrees(angle_rad)

# 예제: 두 벡터 사이의 각도 계산
v1 = [1, 0]
v2 = [1, 1]
print(f"두 벡터 사이의 각도: {angle_between_vectors(v1, v2):.1f}도")  # 45.0도

박시니어 씨가 화이트보드에 두 개의 화살표를 그렸습니다. "이 두 벡터 사이의 각도가 몇 도인지 어떻게 알 수 있을까요?" 내적의 기하학적 의미는 바로 여기서 드러납니다.

내적에는 숨겨진 공식이 있습니다. 두 벡터 A와 B의 내적은 A의 크기 곱하기 B의 크기 곱하기 두 벡터 사이각의 코사인 값과 같습니다.

이 공식이 왜 중요할까요? 우리가 내적 값, A의 크기, B의 크기를 모두 알고 있다면, 역으로 코사인 값을 구할 수 있기 때문입니다.

마치 삼각형의 두 변의 길이를 알면 나머지 한 변을 구할 수 있는 것처럼, 내적 공식을 변형하면 두 벡터 사이의 각도를 알아낼 수 있습니다. 위의 코드에서 vector_magnitude 함수는 벡터의 크기를 계산합니다.

피타고라스 정리를 기억하시나요? 벡터의 크기는 각 성분을 제곱해서 더한 뒤 제곱근을 취한 값입니다.

angle_between_vectors 함수는 이 모든 것을 조합합니다. 먼저 두 벡터의 내적을 구하고, 각 벡터의 크기를 계산한 뒤, 공식을 변형해서 코사인 값을 얻습니다.

마지막으로 acos 함수로 실제 각도를 구합니다. 예제에서 v1은 x축 방향을 가리키는 벡터 [1, 0]이고, v2는 대각선 방향의 벡터 [1, 1]입니다.

직관적으로 생각해도 이 두 벡터 사이의 각도는 45도일 것 같은데, 실제로 계산해보니 정확히 45도가 나왔습니다. 이 기하학적 의미 덕분에 내적은 컴퓨터 그래픽스에서 필수적인 도구가 됩니다.

광원이 물체에 비추는 각도를 계산할 때, 카메라가 바라보는 방향과 물체의 위치 관계를 파악할 때, 모두 내적이 사용됩니다. 김개발 씨가 감탄했습니다.

"단순히 숫자를 곱하고 더하는 것 같았는데, 그 안에 각도 정보가 숨어 있었군요!" 박시니어 씨가 미소 지었습니다. "맞아요.

수학의 아름다움이 바로 여기에 있죠."

실전 팁

💡 - 코사인 값의 범위는 -1에서 1 사이이므로, 정규화되지 않은 내적은 벡터 크기에 영향을 받습니다

  • 각도가 90도면 코사인 값이 0이므로 내적도 0이 됩니다

3. 코사인 유사도

김개발 씨는 추천 시스템 코드를 살펴보다가 "코사인 유사도"라는 용어를 발견했습니다. 내적과 비슷해 보이는데 뭔가 다릅니다.

박시니어 씨에게 물어보니 "내적의 정규화 버전"이라는 답이 돌아왔습니다.

**코사인 유사도(Cosine Similarity)**는 두 벡터 사이 각도의 코사인 값입니다. 내적을 두 벡터의 크기로 나누어 정규화한 것으로, 결과가 항상 -1에서 1 사이입니다.

벡터의 크기에 상관없이 순수하게 방향만 비교할 때 사용합니다.

다음 코드를 살펴봅시다.

import math

def cosine_similarity(a, b):
    # 내적 계산
    dot_product = sum(x*y for x, y in zip(a, b))
    # 각 벡터의 크기 계산
    magnitude_a = math.sqrt(sum(x**2 for x in a))
    magnitude_b = math.sqrt(sum(x**2 for x in b))
    # 0으로 나누기 방지
    if magnitude_a == 0 or magnitude_b == 0:
        return 0
    # 코사인 유사도 = 내적 / (크기의 곱)
    return dot_product / (magnitude_a * magnitude_b)

# 예제: 사용자 취향 벡터 비교
user_a = [5, 3, 0, 1]  # 영화 장르별 선호도
user_b = [4, 2, 0, 1]  # 다른 사용자
user_c = [0, 0, 5, 4]  # 취향이 다른 사용자

print(f"A와 B의 유사도: {cosine_similarity(user_a, user_b):.3f}")  # 0.989
print(f"A와 C의 유사도: {cosine_similarity(user_a, user_c):.3f}")  # 0.134

김개발 씨는 추천 시스템에서 자주 등장하는 코사인 유사도의 정체가 궁금했습니다. 박시니어 씨가 설명을 시작했습니다.

"내적의 한 가지 문제점이 뭔지 알아요?" 내적은 벡터의 크기에 영향을 받습니다. 예를 들어 사용자 A가 [1, 2, 3]이라는 취향 벡터를 가지고 있고, 사용자 B가 [2, 4, 6]이라는 벡터를 가지고 있다면, 이 두 사람은 사실 완전히 같은 취향입니다.

단지 B가 점수를 더 후하게 준 것뿐이죠. 하지만 단순 내적을 계산하면 [1, 2, 3]과 [1, 2, 3]의 내적은 14인데, [1, 2, 3]과 [2, 4, 6]의 내적은 28입니다.

마치 B가 A보다 자기 자신과 더 비슷한 것처럼 보여버립니다. 이 문제를 해결하기 위해 코사인 유사도가 등장했습니다.

코사인 유사도는 내적을 두 벡터의 크기로 나누어 정규화합니다. 결과값은 항상 -1에서 1 사이가 됩니다.

1이면 완전히 같은 방향, 0이면 수직, -1이면 정반대 방향입니다. 위의 코드 예제를 보면, user_a와 user_b는 영화 취향이 비슷합니다.

액션과 코미디를 좋아하고, 로맨스와 공포는 별로입니다. 코사인 유사도가 0.989로 거의 1에 가깝습니다.

반면 user_c는 정반대의 취향입니다. 로맨스와 공포를 좋아합니다.

user_a와의 코사인 유사도가 0.134로 낮게 나옵니다. 실무에서 코사인 유사도는 정말 다양한 곳에서 활용됩니다.

검색 엔진에서 문서와 검색어의 유사도를 측정할 때, 자연어 처리에서 단어 임베딩 벡터를 비교할 때, 이미지 검색에서 특징 벡터를 비교할 때 모두 코사인 유사도가 사용됩니다. 주의할 점도 있습니다.

코사인 유사도는 방향만 비교하기 때문에, 벡터의 크기가 중요한 경우에는 적합하지 않습니다. 예를 들어 구매 금액을 비교하는 경우, 같은 비율로 물건을 샀더라도 금액 자체가 중요할 수 있습니다.

김개발 씨가 정리했습니다. "그러니까 순수하게 방향만 비교하고 싶을 때 코사인 유사도를 쓰는 거군요!"

실전 팁

💡 - 텍스트 유사도 측정에서 코사인 유사도가 자주 사용됩니다

  • 벡터에 음수가 없다면 코사인 유사도는 0에서 1 사이가 됩니다

4. 외적 (Cross Product)

김개발 씨는 3D 게임 엔진 코드를 분석하다가 "cross product"라는 함수를 발견했습니다. 내적은 알겠는데, 외적은 또 뭘까요?

박시니어 씨가 설명했습니다. "내적이 숫자를 반환한다면, 외적은 새로운 벡터를 반환해요."

**외적(Cross Product)**은 두 벡터에 모두 수직인 새로운 벡터를 만드는 연산입니다. 3차원 공간에서만 정의되며, 결과 벡터의 크기는 두 벡터가 이루는 평행사변형의 넓이와 같습니다.

3D 그래픽스에서 표면의 법선 벡터를 구할 때 필수적입니다.

다음 코드를 살펴봅시다.

def cross_product(a, b):
    # 외적은 3차원 벡터에서만 정의됨
    # 결과: 두 벡터에 모두 수직인 새로운 벡터
    x = a[1] * b[2] - a[2] * b[1]
    y = a[2] * b[0] - a[0] * b[2]
    z = a[0] * b[1] - a[1] * b[0]
    return [x, y, z]

# 예제: x축과 y축 벡터의 외적
x_axis = [1, 0, 0]
y_axis = [0, 1, 0]
result = cross_product(x_axis, y_axis)
print(f"x축 X y축 = {result}")  # [0, 0, 1] = z축

# 순서를 바꾸면 방향이 반대
result2 = cross_product(y_axis, x_axis)
print(f"y축 X x축 = {result2}")  # [0, 0, -1]

박시니어 씨가 화이트보드에 3차원 좌표축을 그렸습니다. "내적과 외적의 가장 큰 차이점이 뭔지 알아요?" 내적은 두 벡터를 넣으면 숫자 하나가 나옵니다.

반면 외적은 두 벡터를 넣으면 새로운 벡터가 나옵니다. 게다가 이 새로운 벡터는 원래 두 벡터에 모두 수직입니다.

마치 책상 위에 두 개의 펜을 올려놓았다고 생각해보세요. 외적은 이 두 펜이 놓인 평면에서 수직으로 솟아오르는 화살표를 만드는 것과 같습니다.

외적의 공식은 조금 복잡해 보입니다. 하지만 걱정하지 마세요.

실무에서는 직접 계산하기보다 NumPy 같은 라이브러리를 사용합니다. 위의 코드에서 재미있는 점을 발견할 수 있습니다.

x축 벡터 [1, 0, 0]과 y축 벡터 [0, 1, 0]의 외적은 z축 벡터 [0, 0, 1]이 됩니다. 두 축에 모두 수직인 방향은 나머지 한 축뿐이니까요.

또 하나 중요한 특징이 있습니다. 외적은 교환법칙이 성립하지 않습니다.

A 외적 B와 B 외적 A는 크기는 같지만 방향이 정반대입니다. 코드에서 순서를 바꿨더니 [0, 0, 1]이 [0, 0, -1]로 바뀐 것을 확인할 수 있습니다.

이 방향을 결정하는 규칙을 오른손 법칙이라고 합니다. 오른손으로 첫 번째 벡터에서 두 번째 벡터 방향으로 손가락을 감아쥐면, 엄지손가락이 가리키는 방향이 외적의 방향입니다.

외적은 어디에 사용될까요? 가장 대표적인 용도는 3D 그래픽스에서 **법선 벡터(Normal Vector)**를 구하는 것입니다.

삼각형 표면에 빛이 어떻게 반사되는지 계산하려면, 그 표면에 수직인 방향을 알아야 합니다. 삼각형의 두 변을 벡터로 만들고 외적을 구하면, 바로 법선 벡터를 얻을 수 있습니다.

물리 엔진에서도 외적이 활용됩니다. 회전하는 물체의 토크를 계산하거나, 두 물체의 충돌 방향을 판별할 때 외적이 등장합니다.

김개발 씨가 고개를 끄덕였습니다. "그래서 3D 게임 코드에 cross product가 그렇게 많았군요!"

실전 팁

💡 - 외적은 3차원에서만 정의되고, 내적은 모든 차원에서 사용 가능합니다

  • 오른손 법칙으로 외적 결과의 방향을 직관적으로 파악할 수 있습니다

5. 직교 벡터 판별

김개발 씨는 머신러닝 전처리 코드에서 "직교(orthogonal)"라는 단어를 자주 보게 되었습니다. 직교가 뭐고, 왜 중요한 걸까요?

박시니어 씨가 말했습니다. "두 벡터가 직교한다는 건 서로 완전히 독립적이라는 뜻이에요."

두 벡터가 **직교(Orthogonal)**한다는 것은 90도 각도를 이루고 있다는 의미입니다. 내적의 기하학적 의미에서 배웠듯이, 코사인 90도는 0이므로 두 벡터의 내적이 0이면 직교합니다.

이는 매우 간단하면서도 강력한 판별법입니다.

다음 코드를 살펴봅시다.

def is_orthogonal(a, b, tolerance=1e-9):
    # 두 벡터의 내적이 0이면 직교
    dot_product = sum(x*y for x, y in zip(a, b))
    return abs(dot_product) < tolerance

# 예제 1: 직교하는 벡터
v1 = [1, 0, 0]
v2 = [0, 1, 0]
print(f"v1과 v2 직교 여부: {is_orthogonal(v1, v2)}")  # True

# 예제 2: 직교하지 않는 벡터
v3 = [1, 1, 0]
v4 = [1, 0, 0]
print(f"v3과 v4 직교 여부: {is_orthogonal(v3, v4)}")  # False

# 예제 3: 2D에서 직교하는 벡터 찾기
original = [3, 4]
orthogonal = [-4, 3]  # y와 x를 바꾸고 하나에 음수
print(f"원본과 직교 벡터의 내적: {sum(x*y for x,y in zip(original, orthogonal))}")  # 0

박시니어 씨가 질문했습니다. "직교가 왜 중요한지 알아요?" 직교한다는 것은 두 벡터가 서로 완전히 다른 방향을 가리킨다는 뜻입니다.

90도 각도, 즉 수직을 이루고 있는 것이죠. 일상적인 비유를 들어볼까요?

동쪽으로 아무리 많이 걸어도 북쪽에 가까워지지 않습니다. 동쪽과 북쪽은 직교하는 방향이기 때문입니다.

마찬가지로 직교하는 두 벡터는 서로에게 전혀 영향을 주지 않습니다. 내적의 기하학적 의미를 다시 떠올려 봅시다.

내적은 두 벡터 크기의 곱에 사이각의 코사인을 곱한 값입니다. 90도의 코사인은 0이므로, 직교하는 두 벡터의 내적은 반드시 0이 됩니다.

이 성질을 역으로 이용하면 직교 판별이 매우 간단해집니다. 두 벡터의 내적을 계산해서 0인지만 확인하면 됩니다.

위의 코드에서 tolerance라는 매개변수가 있는 것에 주목하세요. 컴퓨터에서 부동소수점 연산은 작은 오차가 발생할 수 있습니다.

이론상 정확히 0이어야 할 값이 0.0000000001 같은 아주 작은 숫자로 나올 수 있습니다. 그래서 절대값이 아주 작은 수보다 작은지를 확인합니다.

예제 3은 재미있는 기법을 보여줍니다. 2차원 벡터 [3, 4]에 직교하는 벡터를 찾으려면 어떻게 할까요?

x와 y를 서로 바꾸고 하나에 음수를 붙이면 됩니다. [-4, 3]이 되죠.

실제로 내적을 계산하면 3 곱하기 -4 더하기 4 곱하기 3, 즉 -12 더하기 12로 정확히 0이 됩니다. 직교는 머신러닝에서 매우 중요한 개념입니다.

**주성분 분석(PCA)**에서는 서로 직교하는 축을 찾아 데이터의 차원을 줄입니다. 직교하는 특성들은 서로 독립적인 정보를 담고 있어서, 중복 없이 데이터를 효율적으로 표현할 수 있습니다.

김개발 씨가 이해했습니다. "내적 하나로 이렇게 유용한 판별을 할 수 있군요!"

실전 팁

💡 - 부동소수점 연산 오차 때문에 정확히 0인지가 아니라 충분히 작은지를 확인해야 합니다

  • 2D에서 직교 벡터는 [x, y]를 [-y, x]로 바꾸면 쉽게 구할 수 있습니다

6. NumPy로 내적 계산

김개발 씨는 지금까지 for 루프로 내적을 구현했지만, 실제 프로젝트에서는 훨씬 큰 벡터를 다뤄야 합니다. 박시니어 씨가 조언했습니다.

"실무에서는 NumPy를 써요. 빠르고 간편하거든요."

NumPy는 파이썬의 수치 연산 라이브러리로, 벡터와 행렬 연산에 최적화되어 있습니다. np.dot()으로 내적을, np.cross()로 외적을 한 줄로 계산할 수 있습니다.

C 언어로 구현되어 있어 직접 작성한 파이썬 코드보다 수십 배 빠릅니다.

다음 코드를 살펴봅시다.

import numpy as np

# 내적 계산 - 세 가지 방법
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

# 방법 1: np.dot 함수
dot1 = np.dot(a, b)
# 방법 2: @ 연산자 (Python 3.5+)
dot2 = a @ b
# 방법 3: 메서드 호출
dot3 = a.dot(b)
print(f"내적: {dot1}, {dot2}, {dot3}")  # 모두 32

# 외적 계산
c = np.array([1, 0, 0])
d = np.array([0, 1, 0])
cross = np.cross(c, d)
print(f"외적: {cross}")  # [0 0 1]

# 코사인 유사도 (정규화 후 내적)
from numpy.linalg import norm
cos_sim = np.dot(a, b) / (norm(a) * norm(b))
print(f"코사인 유사도: {cos_sim:.4f}")  # 0.9746

박시니어 씨가 말했습니다. "지금까지 원리를 이해하기 위해 직접 구현해봤는데, 실무에서는 그럴 필요 없어요." NumPy는 파이썬 데이터 과학의 기초가 되는 라이브러리입니다.

내부적으로 C 언어로 구현되어 있어서, 파이썬으로 직접 작성한 코드보다 훨씬 빠릅니다. 특히 벡터와 행렬 연산에 최적화되어 있죠.

NumPy로 내적을 계산하는 방법은 여러 가지가 있습니다. 첫 번째는 np.dot(a, b) 함수를 사용하는 것입니다.

가장 명시적이고 읽기 쉬운 방법입니다. 두 번째는 @ 연산자를 사용하는 것입니다.

파이썬 3.5부터 도입된 행렬 곱셈 연산자로, 수학 표기법과 비슷해서 코드가 깔끔해집니다. a @ b라고 쓰면 됩니다.

세 번째는 배열의 dot 메서드를 호출하는 것입니다. a.dot(b)처럼 사용합니다.

세 가지 방법 모두 같은 결과를 반환합니다. 팀의 코딩 컨벤션에 따라 선택하면 됩니다.

외적도 마찬가지로 간단합니다. np.cross(a, b) 한 줄이면 끝입니다.

코사인 유사도는 NumPy에 별도 함수가 없지만, 내적과 놈(norm)을 조합해서 쉽게 구할 수 있습니다. numpy.linalg 모듈의 norm 함수가 벡터의 크기를 계산해줍니다.

성능 차이는 얼마나 될까요? 작은 벡터에서는 큰 차이가 없지만, 수만 개의 원소를 가진 벡터에서는 NumPy가 수십 배에서 수백 배 빠릅니다.

머신러닝에서 다루는 데이터는 대부분 이런 대용량이기 때문에, NumPy 사용은 사실상 필수입니다. 실무에서 주의할 점도 있습니다.

NumPy 배열은 일반 파이썬 리스트와 다르게 동작하는 부분이 있습니다. 예를 들어 두 리스트를 더하면 연결되지만, 두 NumPy 배열을 더하면 원소별로 덧셈이 됩니다.

처음에는 헷갈릴 수 있으니 주의하세요. 김개발 씨가 감탄했습니다.

"원리를 알고 나니까 NumPy 함수들이 뭘 하는지 정확히 이해할 수 있네요!" 박시니어 씨가 고개를 끄덕였습니다. "맞아요.

원리를 모르고 라이브러리만 쓰면 한계가 있어요. 오늘 배운 내용이 앞으로 큰 도움이 될 거예요."

실전 팁

💡 - 대용량 데이터에서는 반드시 NumPy를 사용하세요. 성능 차이가 큽니다

  • @ 연산자는 코드를 간결하게 만들지만, 명시적인 np.dot()을 선호하는 팀도 있습니다

이상으로 학습을 마칩니다. 위 내용을 직접 코드로 작성해보면서 익혀보세요!

#Python#LinearAlgebra#DotProduct#CrossProduct#NumPy#Math,Linear Algebra

댓글 (0)

댓글을 작성하려면 로그인이 필요합니다.