๐ ๋ค์ด๊ฐ๋ฉฐ
ํ์ด์ฌ์ผ๋ก ๋ฐ์ดํฐยทํต๊ณ ๋ถ์์ ํ ๋ ํต์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ numpy, pandas, matplotlib๋ค. ์ด๋ฒ ๊ธ์์๋ ๊ทธ์ค Numpy๋ฅผ ์ ๋ฆฌํ๋ค.
Numpy๋? ๋ฐฐ์ด์ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ndarray ๊ฐ์ฒด๋ฅผ ์ ๊ณตํ๋ค. ํ์ด์ฌ ๊ธฐ๋ณธ ๋ฆฌ์คํธ๋ฅผ ์
๊ทธ๋ ์ด๋ํด ๋ ํฅ์๋ ๊ธฐ๋ฅ(๋ฒกํฐยทํ๋ ฌ ์ฐ์ฐ)์ ์ค๋ค.
1
2
3
4
5
6
| import numpy as np
arr = [1, 2, 3, 4]
a = np.array(arr)
print(type(a))
# >>> <class 'numpy.ndarray'>
|
1. ๋ฐฐ์ด ์์ฑ ๋ฉ์๋
| ๋ฉ์๋ | ์ญํ |
|---|
np.zeros(n) | 0์ผ๋ก ์ฑ์ด ๋ฐฐ์ด |
np.ones(n) | 1๋ก ์ฑ์ด ๋ฐฐ์ด |
np.arange(s,e,step) | ๋ฒ์ ๋ฐฐ์ด (๋ฆฌ์คํธ ๋ถํ์) |
np.array(...).reshape(r,c) | ํยท์ด ์ฌ๊ตฌ์ฑ |
1
2
3
4
5
6
7
8
9
| np.zeros(10) # [0. 0. ... 0.]
np.ones(10, dtype=int) # [1 1 ... 1]
np.ones((3, 3), dtype=int) # 3x3 2์ฐจ์ ํ๋ ฌ
# [[1 1 1]
# [1 1 1]
# [1 1 1]]
np.arange(2, 10, 2) # [2 4 6 8]
|
reshape โ ๋ฐฐ์ด์ ์ํ๋ ํํ๋ก ์ฌ๊ตฌ์ฑํ๋ค.
1
2
3
4
| a = np.array([1, 2, 3, 4])
a.reshape([2, 2])
# [[1 2]
# [3 4]]
|
2. ๋ฐฐ์ด ํฉ์น๊ธฐ (stack)
| ๋ฉ์๋ | ๋ฐฉํฅ |
|---|
np.vstack((a,b)) | ์์ง(์ธ๋ก) |
np.hstack((a,b)) | ์ํ(๊ฐ๋ก) |
1
2
3
4
5
| a = np.array([1, 2])
b = np.array([3, 4])
np.vstack((a, b))
# [[1 2]
# [3 4]]
|
โ ๏ธ ํฉ์น ๋ ๋ฐฐ์ด์ ๊ธธ์ด๊ฐ ๊ฐ์์ผ ํ๋ค.
3. ์ธ๋ฑ์ฑยท์ฌ๋ผ์ด์ฑ
1
2
3
4
5
6
| a = np.array(range(12)).reshape(4, 3) # 0~11์ 4x3์ผ๋ก
a[0][1] # ์ฒซ ํ ๋ ๋ฒ์งธ ์ด โ 1
a[:2, :] # ์ฝค๋ง๋ก ํยท์ด ๊ตฌ๋ถ: 2ํ๊น์ง, ๋ชจ๋ ์ด
# [[0 1 2]
# [3 4 5]]
|
๐ก 2์ฐจ์ ๋ฐฐ์ด์์ ์ฝค๋ง(,)๊ฐ ํ๊ณผ ์ด์ ๊ตฌ๋ถํ๋ค. a[:2, :]๋ โ0~1ํ, ๋ชจ๋ ์ดโ์ ์๋ฏธํ๋ค.
4. ํ์ฉ โ ์๊ฐํ & ํ๋ ฌ๋ก ๋ฐฉ์ ์ ํ๊ธฐ
ํจ์ ์๊ฐํ (matplotlib ๋ง๋ณด๊ธฐ):
1
2
3
4
5
| x = np.linspace(0, 1, 100) # 0~1์ 100๋ฑ๋ถ
y = x ** 2
import matplotlib.pyplot as plt
plt.plot(x, y)
|
์ฐ๋ฆฝ๋ฐฉ์ ์์ ์ญํ๋ ฌ๋ก ํ๊ธฐ โ x + y = 4, 2x + 4y = 14:
1
2
3
4
5
6
| a = np.array([[1, 1], [2, 4]]) # ๊ณ์ ํ๋ ฌ
b = np.array([4, 14]) # ์์
inv_a = np.linalg.inv(a) # ์ญํ๋ ฌ
inv_a @ b # @ = ํ๋ ฌ๊ณฑ
# >>> array([1., 3.]) โ x=1, y=3
|
๐ก ๊ณ์๋ง ๋ชจ์ ํ๋ ฌ์ ์ญํ๋ ฌ๋ก ๋ฐ๊ฟ ์์ ๋ฒกํฐ์ ํ๋ ฌ๊ณฑ(@)ํ๋ฉด ํด๊ฐ ๋์จ๋ค. ๋ํ์ด๊ฐ ์ ํ๋์๋ฅผ ์ผ๋ง๋ ๊ฐ๊ฒฐํ๊ฒ ๋ค๋ฃจ๋์ง ๋ณด์ฌ์ฃผ๋ ์๋ค.
๐ ์ ๋ฆฌ
1
2
3
4
5
| Numpy
โโ ์์ฑ zeros/ones/arange/reshape
โโ ํฉ์น๊ธฐ vstack(์์ง) / hstack(์ํ) โ ๊ธธ์ด ๊ฐ์์ผ
โโ ์ธ๋ฑ์ฑ a[ํ, ์ด], ์ฝค๋ง๋ก ๊ตฌ๋ถ
โโ ์ ํ๋์ linalg.inv(์ญํ๋ ฌ), @ (ํ๋ ฌ๊ณฑ)
|
| ๊ฐ๋
| ํ ์ค ์ ์ |
|---|
| ndarray | Numpy์ ํฅ์๋ ๋ฐฐ์ด ๊ฐ์ฒด |
| reshape | ๋ฐฐ์ด์ ํยท์ด๋ก ์ฌ๊ตฌ์ฑ |
| @ (matmul) | ํ๋ ฌ ๊ณฑ ์ฐ์ฐ |
| linalg.inv | ์ญํ๋ ฌ |
Numpy๋ โ๋ฆฌ์คํธ๋ฅผ ๋ฒกํฐยทํ๋ ฌ๋ก ๋ค๋ฃจ๋โ ๋ฐ์ดํฐ ๋ถ์์ ๊ธฐ๋ฐ์ด๋ค. reshapeยท์ธ๋ฑ์ฑยทํ๋ ฌ๊ณฑ๋ง ์ตํ๋ pandasยท์๊ฐํ๋ก ์์ฐ์ค๋ฝ๊ฒ ์ด์ด์ง๋ค.
Comments powered by Disqus.