๐Numpy๋?
- ๋ํ์ด(Numpy)๋ ์์น ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ํ์ด์ฌ ํจํค์ง๋ค.
๐กNumpy์ ํ์ฉ
- Numpy์ ํต์ฌ์ด๋ผ ๋ถ๋ฆฌ๋ ๋ค์ฐจ์ ํ๋ ฌ ์๋ฃ๊ตฌ์กฐ์ธ ndarray๋ฅผ ํตํด ๋ฒกํฐ ํ๋ ฌ์ ์ฌ์ฉํ๋ ์ ํ ๋์ ๊ณ์ฐ์์ ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
- Numpy๋ ํธ์์ฑ ๋ฟ๋ง ์๋๋ผ, ์๋๋ฉด์์๋ ์์ ํ์ด์ฌ์ ๋นํด ์๋์ ์ผ๋ก ๋น ๋ฅด๋ค๋ ์ฅ์ ์ด ์๋ค.
๐๋ํ์ด ์ฌ์ฉํด๋ณด๊ธฐ
๊ธฐ๋ณธ์ ์ผ๋ก ์๋์ฝ๋ค ํ๊ฒฝ์ ๋ํ์ด๋ ์ค์น๋์ด ์๋ค. ๋ง์ฝ ์ค์น๋์ด ์์ง ์์ ํ๊ฒฝ์ด๋ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ช ๋ น์ด๋ก ์ค์น ๊ฐ๋ฅํ๋ค.
pip install numpy
Numpy์ ๊ฒฝ์ฐ, np๋ก ์ ์ํ๋ ๊ฒ์ด ์๋ฌต์ ์ธ ๋ฃฐ์ด๋ค.
import numpy as np
1) np.array()
Numpy์ ํต์ฌ์ธ ndarray์ด๋ค. np.array()๋ ๋ฆฌ์คํธ, ํํ, ๋ฐฐ์ด๋ก ๋ถํฐ ndarray๋ฅผ ์์ฑํ๋ค. ํ์ด์ฌ์ ์๋ฃ๊ตฌ์กฐ ์ค ํ๋์ธ ๋ฆฌ์คํธ๋ฅผ ๊ฐ์ง๊ณ 1์ฐจ์ ๋ฐฐ์ด์ ์์ฑํด๋ณด์.
# 1์ฐจ์ ๋ฐฐ์ด
vec = np.array([1, 2, 3, 4, 5])
print(vec)
# ์ถ๋ ฅ
[1 2 3 4 5]
๋ค์์ 2์ฐจ์ ๋ฐฐ์ด์ ์์ฑํด๋ณด์. ์ฃผ์ํ ์ ์ np.array() ์์๋ ๋ฆฌ์คํธ๋ง ๋ค์ด๊ฐ๋ค. ๋ฐ๋ผ์ ๋ฆฌ์คํธ ์์ ๋ฆฌ์คํธ๋ฅผ ๋ฃ์ด 2์ฐจ์ ํํ๋ก ์ฌ์ฉํ์.
# 2์ฐจ์ ๋ฐฐ์ด (array์์ ๋ฆฌ์คํธ ์์ ๋ฆฌ์คํธ ์์ฑ)
mat = np.array([[10, 20, 30], [60, 70, 100]])
print(mat)
# ์ถ๋ ฅ
[[ 10 20 30]
[ 60 70 100]]
๋ฐฉ๊ธ ์์ฑํ ๋ ๋ฐฐ์ด์ ํ์ ์ ํ์ธํด๋ณด์.
print("vec์ ํ์
: ", type(vec))
print("mat์ ํ์
: ", type(mat))
# ์ถ๋ ฅ
vec์ ํ์
: <class 'numpy.ndarray'>
mat์ ํ์
: <class 'numpy.ndarray'>
๋์ผํ๊ฒ ๋ ํ์ ์ด numpy.ndarray๋ก ์ถ๋ ฅ๋๋ค.
Numpy ๋ฐฐ์ด์์๋ ์ถ์ ๊ฐ์(ndim)์ ํฌ๊ธฐ(shape)๋ผ๋ ๊ฐ๋ ์ด ์กด์ฌํ๋๋ฐ, ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ์ ํํ๊ฒ ์์งํ๋ ๊ฒ์ด ์ค์ํ๋ค.
๋ค์์ ๋ฐฐ์ด์ ์ถ์ ๊ฐ์์ ํฌ๊ธฐ๋ฅผ ์์๋ณด๋ ์ฝ๋์ด๋ค.
# numpy๋ฐฐ์ด์์๋ ์ถ์ ๊ฐฏ์(ndim)๊ณผ ํฌ๊ธฐ(shape) ๊ฐ๋
์กด์ฌ,
# ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ์ ํํ๊ฒ ์์งํ๋ ๊ฒ์ด ์ค์ํ๋ค.
print("vec์ ์ถ์ ๊ฐฏ์ : ", vec.ndim)
print("vec์ ํฌ๊ธฐ(shape) : ", vec.shape)
print(f"mat์ ์ถ์ ๊ฐฏ์ : {mat.ndim}")
print(f"mat์ ํฌ๊ธฐ(shape) : {mat.shape}")
# ์ถ๋ ฅ
vec์ ์ถ์ ๊ฐฏ์ : 1
vec์ ํฌ๊ธฐ(shape) : (5,)
mat์ ์ถ์ ๊ฐฏ์ : 2
mat์ ํฌ๊ธฐ(shape) : (2, 3)
2) ndarray์ ์ด๊ธฐํ
ndarray๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ค์ํ๋ค. ๋ฆฌ์คํธ๋ฅผ ์ด์ฉํด ์์ฑํ๋ ๋ฐฉ๋ฒ ์ธ์๋ ๋ง์ ๋ฐฉ๋ฒ์ด ์กด์ฌํ๊ธฐ์ ํ์์ ๋ฐ๋ผ์ ๋ค์ํ ๋ฐฐ์ด์ ์์ฑํ ์ ์๋ค.
# ๋ชจ๋ ๊ฐ์ด 0์ธ 2x3๋ฐฐ์ด ์์ฑ
zero_mat = np.zeros((2, 3))
print(zero_mat)
# ์ถ๋ ฅ
[[0. 0. 0.]
[0. 0. 0.]]
# ๋ชจ๋ ๊ฐ์ด 1์ธ 2x3๋ฐฐ์ด ์์ฑ
one_mat = np.ones((2, 3))
print(one_mat)
# ์ถ๋ ฅ
[[1. 1. 1.]
[1. 1. 1.]]
# ํน์ ์์ ์ง์ ๋ฐฐ์ด (2x3 ํฌ๊ธฐ์ 7๋ก ์ฑ์ด ๋ฐฐ์ด)
full_mat = np.full((2, 3), 7)
print(full_mat)
# ์ถ๋ ฅ
[[7 7 7]
[7 7 7]]
# ๋๊ฐ์ ์ 1์ด๊ณ ๋๋จธ์ง๋ 0์ธ ๋ฐฐ์ด
eye_mat = np.eye(5)
print(eye_mat)
# ์ถ๋ ฅ
[[1. 0. 0. 0. 0.]
[0. 1. 0. 0. 0.]
[0. 0. 1. 0. 0.]
[0. 0. 0. 1. 0.]
[0. 0. 0. 0. 1.]]
# ์์์ ๊ฐ์ ๊ฐ์ง๋ ๋ฐฐ์ด
random_mat = np.random.random((2, 3))
print(random_mat)
# ์ถ๋ ฅ
[[0.898747 0.82709366 0.71725064]
[0.17029713 0.38652344 0.13340347]]
์ด ์ธ์๋ ๋ค์ํ ๋ฐฉ๋ฒ์ ํ์ฉํ์ฌ Numpy์์ ๋ฐฐ์ด์ ์์ฑํ ์ ์์ผ๋ฏ๋ก ํ์์ ๋ฐ๋ผ ์ฌ์ฉํ ์ ์๋ค.
3) np.arrange()
np.arange(n)์ 0๋ถํฐ n-1๊น์ง์ ๊ฐ์ ๊ฐ์ง๋ ๋ฐฐ์ด์ ์์ฑํ๋ค.
๋ง์น ๋ฐ๋ณต๋ฌธ์ ํ์ฉํ์ฌ ๋ฆฌ์คํธ๋ฅผ ์์ฑํ๋ ๊ฒ๊ณผ ์ ์ฌํ๋ค.
# np.arange()๋ 0๋ถํฐ n-1๊น์ง์ ๊ฐ์ ๊ฐ์ง๋ ๋ฐฐ์ด ์์ฑ
range_vec = np.arange(10)
print(range_vec)
# ์ถ๋ ฅ
[0 1 2 3 4 5 6 7 8 9]
np.arange(i, j, k)๋ i๋ถํฐ j-1๊น์ง k์ฉ ์ฆ๊ฐํ๋ ๋ฐฐ์ด์ ์์ฑํ๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก for๋ฌธ๊ณผ ๋งค์ฐ ์ ์ฌํ๋ค.
# np.arange(i, j, k) : i๋ถํฐ j-1๊น์ง k๋งํผ ์ฆ๊ฐ
n = 2
range_n_step_vec = np.arange(1, 10, n)
print(range_n_step_vec)
# ์ถ๋ ฅ
[1 3 5 7 9]
4) np.reshape()
np.reshape()์ ๋ด๋ถ ๋ฐ์ดํฐ๋ ๋ณ๊ฒฝํ์ง ์์ผ๋ฉด์ ๋ฐฐ์ด์ ๊ตฌ์กฐ๋ฅผ ๋ฐ๊พผ๋ค.
0๋ถํฐ 29๊น์ง์ ์ซ์๋ฅผ ์์ฑํ๋ arange(30)์ ์ํํ ํ, ์์์ ๊ฐ์๊ฐ 30๊ฐ์ด๋ฏ๋ก 5ํ 6์ด์ ํ๋ ฌ๋ก ๋ณ๊ฒฝํด๋ณด์.
# np.reshape() : ๋ฐฐ์ด์ ๊ตฌ์กฐ๋ฅผ ๋ฐ๊พผ๋ค.
reshape_mat = np.array(np.arange(30)).reshape((5, 6))
print(reshape_mat)
# ์ถ๋ ฅ
[[ 0 1 2 3 4 5]
[ 6 7 8 9 10 11]
[12 13 14 15 16 17]
[18 19 20 21 22 23]
[24 25 26 27 28 29]]
โฌ๏ธ์ ์ฒด ์์ค์ฝ๋โฌ๏ธ
Data_Analysis/ํ์ด์ฌ ๊ธ์ต๋ฐ์ดํฐ ๋ถ์/02_ํ์ด์ฌ ๊ธฐ๋ณธ ๋ฌธ๋ฒ/02_numpy.ipynb at main · Do-heewan/Data_Analysis
Analyzing myself. Contribute to Do-heewan/Data_Analysis development by creating an account on GitHub.
github.com
'Data-Analysis' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Data-Analysis] ์ ์ฉ์นด๋ ์ฌ์ฉ์ ์ฐ์ฒด ์์ธก ํ๋ก์ ํธ (1) | 2025.04.15 |
---|