본문 바로가기

Python/AI 수학 with Python

[Python] 스칼라, 벡터, 행렬, 텐서 표시

스칼라 구현

[In]

a = 1
b = 1.2
c = 0.25
d = 1.2e5
e = -5.7e-4

print(a)
print(b)
print(c) 
print(d) # 1.2 x 10^5
print(e) # -5.7 x 10^(-4)

[Out]

1
1.2
0.25
120000.0
-0.00057

 

벡터 구현

- 열벡터 (n x 1 행렬)

$$\vec{x}=\begin{bmatrix} x_{1} \\ x_{2} \\ \vdots \\ x_{n} \\ \end{bmatrix} $$ 

 

- 행벡터 (1 x n 행렬)

$$\vec{x} = \begin{bmatrix} x_1 & x_2 & \cdots & x_n \\ \end{bmatrix} $$

 

numpy를 이용해 1차원 배열을 통해 구현할 수 있다.

[In]

import numpy as np

a = np.array([1,2,3])
print(a)

b = np.array([-2.4, 0.25, -1.3, 1.8])
print(b)

c = np.arange(1, 20, 3) # 1 ~ 19 사이의 정수를 3 간격으로 나타냄
print(c)

[Out]

[1 2 3]
[-2.4   0.25 -1.3   1.8 ]
[ 1  4  7 10 13 16 19]

 

행렬 구현

- 행렬

행과 열로 구성된 2차원 배열로, numpy의 2차원 배열을 이용해 표현할 수 있다.

 

$$\begin{bmatrix}
 1& 2 & 3 \\
 4& 5 & 6 \\
\end{bmatrix}$$

[In]

import numpy as np
a = np.array([[1,2,3],
              [4,5,6]]) # 2x3 행렬

b = np.array([[0.21, 0.14],
              [-1.3, 0.81],
              [0.12,  -2.1]]) # 3x2 행렬

[Out]

import numpy as np
a = np.array([[1,2,3],
              [4,5,6]]) # 2x3 행렬

print(a)

b = np.array([[0.21, 0.14],
              [-1.3, 0.81],
              [0.12,  -2.1]]) # 3x2 행렬

print(b)

[Out]

[[1 2 3]
 [4 5 6]]
[[ 0.21  0.14]
 [-1.3   0.81]
 [ 0.12 -2.1 ]]

 

텐서 구현

- 텐서

스칼라를 여려 개의 차원으로 나타낸 것으로, numpy의 다차원 배열을 이용해 표현할 수 있다.

3차원 텐서

[In]

import numpy as np

a = np.array([[[0,0,0],
               [0,0,1],
               [1,0,0]],
              [[0,1,0],
               [1,1,0],
               [1,0,1]],
              [[0,1,1],
               [1,1,1],
               [0,0,1]]]) # (3,3,3)의 3차원 텐서

print(a)
print()
print(np.shape(a))

[Out]

[[[0 0 0]
  [0 0 1]
  [1 0 0]]

 [[0 1 0]
  [1 1 0]
  [1 0 1]]

 [[0 1 1]
  [1 1 1]
  [0 0 1]]]

(3, 3, 3)