넘파이(Numpy)에서 스칼라(Scalar)란, 하나의 숫자 혹은 값을 나타내는 개념이다, 스칼라는 0차원 배열로 간주되며, 크기나 방향을 가지지 않는 숫자이다. 다시 말해, 스칼라는 단순한 숫자로, 벡터나 행렬과 같은 다차원 배열이 아니다.
1.2 스칼라 알아보기
넘파이에 존재하는 array 함수를 사용하여 스칼라 값을 가진 배열을 만들 수 있다. 스칼라 값을 포함하는 배열은 사실상 0차원 배열로, 크기가 없는 배열로 간주되고 이 배열은 스칼라 값에 대한 넘파이 배열 표현이다.
import numpy as np
# 스칼라 값을 가진 배열
scalar_array = np.array(29)
scalar_array는 스칼라 값 29를 가진 0차원 배열이다. 이 배열은 크기나 차원이 없으며, 스칼라 값에 직접 접근할 수 있다.
print(scalar_array) # 출력: 29
이러한 스칼라 배열은 특별한 경우에 유용할 수 있지만, 대부분의 경우에는 단일 스칼라 값을 사용하는 것이 더 효율적이다. 그럼에도 불구하고 스칼라를 배열로 나타내는 것은 일관성을 유지하고 넘파이의 배열 연산을 일반적인 배열과 동일한 방식으로 적용하기 위해 사용될 수 있다.
print(scalar_array.ndim) # 출력 : 0
print(scalar_array.shape) # 출력 : ()
위의 코드에서 다차원 배열의 차원(ndim)을 확인하면 0이고 형상(shape)은 축(axis)이 없으므로 빈 튜플이 출력되는 걸 확인할 수 있다, 이로써 스칼라가 차원과 형상이 없는 것을 알 수 있다.
또한, 스칼라는 단일 값으로 값 자체가 자료형을 가지고 있다. 스칼라 값은 숫자, 문자열, 부울 값 등과 같은 기본 데이터 유형을 나타낼 수 있으며, 해당 값의 자료형은 스칼라 값 자체의 종류에 따라 달라진다. 스칼라 값이라는 것은 다차원 배열(행렬 또는 텐서)의 원소 중 하나로 사용될 수 있다. 이 경우 다차원 배열의 모든 원소가 같은 자료형을 가질 필요 없으며, 각 원소가 독립적으로 자신의 자료형을 가질 수 있다. 다차원 배열의 각 원소는 스칼라 값이기 때문에 이러한 스칼라 값들은 각각의 자료형을 가질 수 있다. 예를 들어, NumPy와 같은 Python 라이브러리를 사용하여 다차원 배열을 만들 때, 각 원소의 자료형은 모든 원소가 동일한 자료형을 가져야 한다. 그러나 이 자료형은 해당 배열의 원소가 될 스칼라 값의 자료형에 따라 다르다. 따라서 배열의 각 원소는 해당 스칼라 값의 자료형을 가진다.
import numpy as np
# 정수로 이루어진 0차원 배열
array = np.array(29)
# 배열 내 원소의 자료형
element_type = array.dtype
print(element_type) # 출력: int64
위의 코드에서 array는 정수로 이루어진 다차원 배열이며, 각 원소는 정수형(int64) 자료형을 가진다. 이 배열은 스칼라 값으로 이루어져 있고, 각 스칼라 값은 정수형 자료형을 가진다.
2.0 벡터
2.1 벡터(Vector) 이해하기
벡터란 수학적으로 크기와 방향을 가지는 양을 나타내는 개념이지만 넘파이에서의 벡터는 크기뿐만 아니라 방향까지 가진 하나의 수의 집합을 말하고 넘파이의 다차원 배열에서는 1차원 배열로 표현된다. 이러한 1차원 배열은 하나의 행 또는 열로 구성된 것으로 생각할 수 있으며, 벡터의 각 요소는 숫자로 구성된다.
2.2 벡터 알아보기
이제 간단하게 넘파이의 벡터에 대해서 알아보자, array 함수에 29, 정수형 데이터를 원소로 가진 리스트로 전달하여 1차원 배열을 생성하고 해당 변수의 클래스를 확인해 보자.
v = np.array(29)
print(type(v)) # 출력 : numpy.ndarray
print(v) # 출력 : array([29])
print(v.ndim) # 출력 : 1
print(v.shape) # 출력 : (1,)
1차원 배열인 벡터는 차원과 형을 가진다. 이 차원은 하나의 축(axis)이라고 할 수 있다. 위의 코드에서 배열의 속성(ndim)을 확인하면 1이 출력되는 것을 확인할 수 있다. 이는 형상(shape)의 속성의 하나의 값을 가진 튜플이라는 것을 나타낸다. 형상을 확인하기 위해 속성 shape을 출력해 보면 하나의 원소를 가진 튜플이 출력된다. 실제 벡터를 만들 때는 두 개 이상의 원소를 가진 1차원 배열을 만들지만 위의 예시에서는 1개의 요소만 집어넣었다. 벡터는 보통 평면의 좌표축에 x와 y 축을 가지는 점으로 표시하는데 이는 2개의 원소가 필요하다. 하지만 1차원 배열의 특징을 알아보기 위해 1개의 원소로 구성된 다차원 배열로 예시 코드를 작성해 보았다.
마무리
1. 스칼라(Scalar)
스칼라는 크기만 가지고 있고 방향이 없는 양을 나타내는 수이다, 예를 들면 온도, 질량, 시간 등이 스칼라의 예이다. 스칼라는 일반적으로 실수의 형태로 나타내며, 크기나 양을 표현할 때 사용된다.
2. 벡터(Vector)
벡터는 크기와 방향을 모두 가지고 있는 양을 나타내는 수이다. 벡터는 화살표로 표현되며, 화살표의 길이는 벡터의 크기를 나타내고, 방향은 화살표의 방향을 나타낸다. 예를 들면 속도, 힘, 위치 등이 벡터의 예이다. 벡터는 일반적으로 컴퓨터 그래픽스, 물리학, 엔지니어링 등 다양한 분야에서 사용된다.
3. 행렬(Matrix)
행렬은 숫자들을 행과 열의 형태로 정리한 것이다. 행렬은 주로 여러 개의 숫자 데이터를 효율적으로 다루는 데 사용된다. 각 원소는 행과 열의 위치에 따라 정의되며, 이러한 원소들은 스칼라 값일 수도 있고, 벡터일 수도 있다. 예를 들어, 이미지 처리, 선형 변환, 통계, 머신러닝, 컴퓨터 그래픽스 등 다양한 분야에서 행렬이 중요하게 활용된다.
이번 시간에는 간단하게 알아보기 위해 행렬에 대해선 다루지 않았지만 다음 시간에 다룰 예정이므로 이번에는 위의 간단한 설명만 읽어보길 바란다.