02. ํ์ด์ฌ ๊ธฐ๋ณธ ๋ฌธ๋ฒ
02. ํ์ด์ฌ ๊ธฐ๋ณธ ๋ฌธ๋ฒ ๊ด๋ จ
01. ์ฃผ์ (Comment)
์์ ์์ผ๋ก์ ๋ชจ๋ ์ค์ต์ Colab ๋๋ ์ฃผํผํฐ ๋ ธํธ๋ถ์์ ์คํํ๋ค๊ณ ๊ฐ์ ํ๋ค๊ณ ์ธ๊ธํ ๋ฐ ์์ต๋๋ค. ์ด๋ฅผ ์ ๋ ํด์ฃผ์ธ์.
์ฃผ์์ด๋?
ํ์ด์ฌ์์ ์์ #์ ๋ถ์ฌ์ ์์ฑํ๋ ๊ฒฝ์ฐ๋ฅผ ์ฃผ์์ด๋ผ๊ณ ํฉ๋๋ค. ์์ด๋ก comment์ด๊ตฌ์. ์ค์ ์ฝ๋๊ฐ ์๋๋ฏ๋ก ์คํ๋์ง ์์ต๋๋ค. ์ผ์ข ์ ๋ฉ๋ชจ๋ฅผ ์ํ ๊ฒ์ด๋ผ๊ณ ๋ณด์๋ฉด ๋ฉ๋๋ค. ์๋์ ๊ฐ์ด ์ฝ๋๋ฅผ ์คํํด๋ด ์๋ค.
# ์ด๋ ๊ฒ ์์ #์ ๋ถ์ฌ์ ์์ฑํ๋ ๊ฒฝ์ฐ๋ฅผ ์ฃผ์์ด๋ผ๊ณ ํฉ๋๋ค.
# ์์ด๋ก comment์ด๊ตฌ์. ์ค์ ์ฝ๋๊ฐ ์๋๋ฏ๋ก ์คํ๋์ง ์์ต๋๋ค.
# ์ผ์ข
์ ๋ฉ๋ชจ๋ฅผ ์ํ ๊ฒ์ด๋ผ๊ณ ๋ณด์๋ฉด ๋ฉ๋๋ค.
2 + 5
#
# 7
2 + 5
์ ๊ฒฐ๊ณผ๋ก 7
์ด ๋์ต๋๋ค. #์ ๋ถ์ฌ์ ์์ฑํ ์ฝ๋๋ ์ค์ ๊ฒฐ๊ณผ์ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค. ์ฌ๋ฌ๋ถ๋ค์ด ์์ฑํ ์ฝ๋๋ผ๊ณ ํ๋๋ผ๋ ๋ฉฐ์น ๋ค์ ๋ค์ ์ฝ์ด๋ณด๋ฉด ์ด ์ฝ๋๊ฐ ์ด๋ค ์๋๋ก ์ ์์ฑ๋์๋์ง ํท๊ฐ๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ด๋ด ๊ฒฝ์ฐ๋ฅผ ์ํด ์ฝ๋ ์์ฑ ์์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ฃผ์์
๋๋ค. ์ ์ ๊ฒฝ์ฐ์๋ ์ฌ๋ฌ๋ถ๋ค์๊ฒ ํ์ด์ฌ ์ฝ๋์ ์ค๋ช
์ ๋๊ธฐ์ํ ์ฉ๋๋ก๋ ์ฌ์ฉํ ๊ฒ์
๋๋ค.
๋ ๋ค๋ฅธ ๋ฐฉ์ : ๋ธ๋ก ๋จ์ ์ฃผ์
์์์ #
์ ์ฌ์ฉํ ์ฃผ์์ ํ ์ค, ํ ์ค ์ฃผ์์ ๋จ๊ธฐ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์
๋๋ค. 5๊ฐ์ ์ค์ ์ฃผ์์ ๋จ๊ธฐ๊ณ ์ถ์ผ๋ฉด 5๊ฐ์ ์ค ๋ชจ๋ ๋งจ ์์ #
์ ์จ์ฃผ์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ฌ๋ฌ ์ค์ ๋ํด์ ๋์์ ์ฃผ์์ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด ์์ ๋ฐ์ดํ('
)๋ฅผ ์ฐ๋ฌ์ ์ธ๊ฐ๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. ํ ๋ฒ ์๋์ ์ฝ๋๋ฅผ ์คํํด๋ณผ๊น์?
'''
์ด๋ ๊ฒ ๋ฐ์ดํ 3๊ฐ๋ก ์์ํ๊ณ ๋ฐ์ดํ 3๊ฐ๋ก ๋๋๋๋ก ์์๊ณผ ๋์ ์ ์ํด์ฃผ๊ณ
๊ทธ ์ฌ์ด์ ์ฃผ์์ ์์ฑํ ์๋ ์์ต๋๋ค.
'''
2 + 5
#
# 7
์ด์ ๊ณผ ๋์ผํ๊ฒ 7์ด๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์ต๋๋ค. #
์ผ๋ก ์ฃผ์์ ์์ฑํ๊ฑฐ๋ '''
์ผ๋ก ์ฃผ์์ ์์ฑํ๋๋ผ๋ ์ด์ฐจํผ ์ฃผ์์ ์คํ ๊ฒฐ๊ณผ์ ์ํฅ์ ๋ผ์น์ง ๋ชปํ๊ณ 2 + 5
๋ง ์คํ๋๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ ๊ฐ์ ์ฃผ์ ์์ฑ ๋ฐฉ์ ์ค ์ด๋ค ๋ฐฉ์์ ์ฃผ์์ ์ฌ์ฉํด์ผ ํ๋์ง์ ๋ํด์๋ ๋ฐ๋ก ์ ๋ต์ด ์์ผ๋ฏ๋ก ์ฌ๋ฌ๋ถ๋ค์ด ํ๋จํ๊ธฐ์ ์ ์ ํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ์ฃผ์์ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
์ฃผ์์ ์ฉ๋๋ ๋ ๋ญ๊ฐ ์์๊น?
์ฃผ์์ ์ฝ๋๋ฅผ ์ค๋ช ํ๊ธฐ ์ํด์ ๋ฉ๋ชจ๋ฅผ ๋จ๊ฒจ๋๋ ์ฉ๋๋ก๋ ์ฌ์ฉํ์ง๋ง ์ํฉ์ ๋ฐ๋ผ์๋ ๊ธฐ์กด์ ์์ฑํ๋ ์ฝ๋๋ฅผ ์ง์ฐ๊ณ ๋ ์ถ์ง ์์ง๋ง, ์์์ ์ผ๋ก ๋ฐฐ์ ์ํค๋ ์ฉ๋๋ก๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฃผ์ ์ฒ๋ฆฌ๋๋ฉด ๊ฒฐ๊ณผ์ ์ํฅ์ ๋ฏธ์น ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์๋ฅผ ๋ค์ด ์ด๋ฐ ์ํฉ์ ๊ฐ์ ํด๋ด ์๋ค. ์ด๋ค ๊ฒฐ๊ณผ๋ฅผ ์ป๊ธฐ ์ํด์ A ๋ฐฉ์์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ๊ฐ์๊ธฐ ๋ ์ค๋ฅธ ์์ด๋์ด๊ฐ ์์ด์ B ๋ฐฉ์์ผ๋ก๋ ์ฝ๋๋ฅผ ์์ฑํด๋ณด๋ ค๊ณ ํฉ๋๋ค. B ๋ฐฉ์์ด ๋ ํจ์จ์ ์ผ ๊ฒ ๊ฐ๊ธฐ ๋๋ฌธ์ ๋๋ค. ํ์ง๋ง A ๋ฐฉ์์ ์ฝ๋๋ฅผ ๋ค ์ง์ฐ๊ธฐ์๋ ์๊น์์ ์ ์๋ง ์ฃผ์ ์ฒ๋ฆฌ๋ฅผ ํ๋ ค๊ณ ํฉ๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ์๋ ๋ค์๊ณผ ๊ฐ์ด ์ฒ๋ฆฌ๋ฅผ ํ ์ ์์ต๋๋ค.
(์ํฉ์ ๊ฐ์ ํ ๊ฒ์ด๋ฏ๋ก ์๋์ ์ฝ๋๋ฅผ ์ค์ ๋ก ์คํํ์ง ๋ง์ธ์! ์ค์ ์คํ๋๋ ์ฝ๋๋ ์๋๋๋ค.)
'''
A ๋ฐฉ์์ ์ฝ๋
'''
B ๋ฐฉ์์ ์ฝ๋
์ด๋ ๊ฒ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด A ๋ฐฉ์์ ์ฝ๋๋ ์ฃผ์ ์ฒ๋ฆฌ๋๊ณ B ๋ฐฉ์์ ์ฝ๋๋ง ์คํ๋๊ฒ ์ฃ ?
02. ๋ณ์์ ์ซ์ ์๋ฃํ
ํ์ด์ฌ์์๋ ๋ค์ํ ์๋ฃํ(๋ฐ์ดํฐ ํ์
)์ด ์กด์ฌํฉ๋๋ค. ๋ํ์ ์ธ ์๋ฃํ์ผ๋ก๋ ์ ์์ ์ค์๋ฅผ ๋ํ๋ด๋ ์ซ์ ์๋ฃํ, ์ฐธ๊ณผ ๊ฑฐ์ง์ ๋ํ๋ด๋ ๋ถ(boolean
) ์๋ฃํ, ๋ฌธ์๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด ์๋ฃํ, ์ฌ๋ฌ ์๋ฃ๋ฅผ ํ์์ ๋ฐ๋ผ์ ๋ค๋ฅด๊ฒ ๋ํ๋ด๋ ๋ฆฌ์คํธ, ๋์
๋๋ฆฌ, ์ธํธ, ํํ์ด ์กด์ฌํฉ๋๋ค.
์ฐ์ ๋ณ์์ ๊ฐ๋ ๊ณผ ์ซ์ ์๋ฃํ์ ๋ํด์ ์ ๋ฆฌํด๋ด ์๋ค.
๋ณ์์ print()
๋ณ์(variable)์ ๋น์ ํ์๋ฉด ์๋ฃ๋ฅผ ๋ด์ ์ ์๋ ์ด๋ฆ์ด ์๋ ์์์
๋๋ค. ๋ค๋ฅด๊ฒ ๋น์ ํด๋ณด๋ฉด ์ผ์ข
์ ๊ฐ์ ์ด๋ฆ์ ๋ถ์ด๋ ๊ฒ์
๋๋ค. ํ์ด์ฌ์์๋ ๋ณ์๋ช
= ์๋ฃ
๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋ณ์์ ์๋ฃ๋ฅผ ํ ๋นํฉ๋๋ค. ์ฌ๊ธฐ์ ์๋ฃ๋ ๊ทธ๋ฅ ๊ฐ๋จํ๊ฒ ์ผ์ข
์ ๊ฐ
์ ์๋ฏธํ๋ค๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค. ํ์ด์ฌ์์ ๊ฐ์ ์ถ๋ ฅํ๋ ๋ฐฉ๋ฒ์ผ๋ก๋ print()
๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ ์ด๋ฐ... ์์ง ์๋ฆฌ์กํ์ฃ ? ์ค์ต์ ํตํด ์ดํดํด๋ด
์๋ค. ๋ง์ํด๋ณด๋ฉด ๋ณ ๋ด์ฉ์ด ์๋๋ผ๋ ๊ฒ์ ์์ค๊ฒ๋๋ค. a
๋ผ๋ ๋ณ์์ 3์ด๋ผ๋ ๊ฐ์ ๋ฃ๊ณ ๊ฐ์ ์ถ๋ ฅํด๋ด
์๋ค.
a = 3
print(a)
#
# 3
a
๋ผ๋ ๋ณ์์ 3์ด๋ผ๋ ๊ฐ์ ๋ฃ์ ๋ค์ print()
๋ฅผ ํตํด a
๋ฅผ ์ถ๋ ฅํ๋๋ 3์ด ์ถ๋ ฅ๋์์ต๋๋ค. ์ดํด๋ฅผ ๋๊ธฐ์ํด์ ์ด๋ฒ์๋ ๊ฐ ์ฝ๋๊ฐ ์๋ฏธํ๋ ๋ฐ๋ฅผ ์ฝ๋์ ๋ฐ๋ก ์์ ์ฃผ์(comment)์ ์์ฑํ์ฌ ์ฌ์คํํด๋ด
์๋ค.
# a์ 3์ ๋ฃ๋๋ค.
a = 3
# a๋ฅผ ์ถ๋ ฅํด๋ผ
print(a)
#
# 3
์ฃผ์์ ์ค๋ช
์ ์ํ ์ฉ๋์ด๊ณ ์คํ ๊ฒฐ๊ณผ์ ์ํฅ์ ๋ผ์น์ง ์์ผ๋ฏ๋ก ๊ฒฐ๊ณผ๊ฐ ๋ฐ๋์ง ์์ต๋๋ค. ๋ค์ ์์ฝํด์ ์ ๋ฆฌํด๋ด
์๋ค. ๋ณ์์ ์ด๋ค ๊ฐ์ ๋ฃ๋ ๋ฐฉ๋ฒ์ ๋ณ์๋ช
= ๊ฐ
์ด๊ตฌ์. print(๋ณ์๋ช
)
์ ์ฌ์ฉํ๋ฉด ํด๋น ๋ณ์ ์์ ์๋ ๊ฐ์ด ์ถ๋ ฅ๋ฉ๋๋ค! ๊ฐ๋จํ์ฃ ?
๋ณ์๋ผ๋ฆฌ ์ฐ์ฐํ๋ ๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค. ํ์ด์ฌ์์๋ +
๋ ๋ ๊ฐ์ ๊ฐ์ ๋ํ๋ผ๋ ์๋ฏธ์
๋๋ค. ๋ ๊ฐ์ ๋ณ์๋ฅผ ์ ์ธํ ๋ค์ ๋ ๊ฐ์ ๋ณ์๋ฅผ ๋ํ ๊ฐ์ ์๋ก์ด ๋ณ์์ ํ ๋นํ๊ณ ๊ทธ ๋ณ์์ ๊ฐ์ ์ถ๋ ฅํด๋ด
์๋ค.
a = 3
b = 5
c = a + b
print(c)
#
# 8
์ ์ฝ๋๋ a
๋ ๋ณ์์ 3์ด๋ ๊ฐ์ ํ ๋นํ๊ณ , b
๋ ๋ณ์์ 5๋ ๊ฐ์ ํ ๋นํ ๋ค์ ๋ ๊ฐ์ ๊ฐ์ ๋ํ ๊ฐ์ c
๋ผ๋ ๋ณ์์ ํ ๋นํ ๋ค์ c
๋ ๋ณ์๋ฅผ ์ถ๋ ฅํ๋ ์ฝ๋์
๋๋ค. ์ฐธ๊ณ ๋ก print()
๋ด์์ ์ฐ์ฐ์ ํ๋ ๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค!
a = 3
b = 5
print(a + b)
#
# 8
์ซ์ ์๋ฃํ(int
, float
)
ํ์ด์ฌ์์๋ ํฌ๊ฒ ์ซ์๋ฅผ ๋ ๊ฐ์ง ์๋ฃํ(๋ฐ์ดํฐ ํ์ )์ผ๋ก ๊ตฌ๋ถํฉ๋๋ค. ์์์ ์ด ์๋ ์ซ์๋ฅผ ์ ์ํ(int), ์์์ ์ด ์๋ ์ซ์๋ฅผ ์ค์ํ(float)์ ๋๋ค. ์ซ์ 3๊ณผ ์์์ ์ด ์๋ ์ซ์์ธ 2.5 ๋ ๊ฐ์ง ์ซ์๋ฅผ ๊ฐ๊ฐ ๋ณ์ a์ b๋ก ์ ์ธํด๋ด ์๋ค.
a = 3
b = 2.5
ํ์ด์ฌ์์๋ ๋ฐ์ดํฐ์ ํ์
. ์ฆ, ์๋ฃํ์ ํ์ธํ๋ ๋ฐฉ๋ฒ์ผ๋ก type()
์ ์ฌ์ฉํฉ๋๋ค. ์์ผ๋ก ๋ง์ด ์ฌ์ฉํ๊ฒ ๋ ํ
๋ ๊ธฐ์ตํด๋ก์๋ค. ์ฐ์ a
์ ์๋ฃํ์ ํ์ธํด๋ด
์๋ค.
print(type(a))
#
# <class 'int'>
<class 'int'>
๋ผ๋ ๋ด์ฉ์ด ์ถ๋ ฅ๋๋๋ฐ์. ์ด๋ ํด๋น ๋ณ์์ ์๋ฃํ์ด ์ ์ํ์ด๋ผ๋ ์๋ฏธ์
๋๋ค. ์ ์ํ ์๋ฃํ์ ์์์ ์ด ์๋ ์ซ์๋ผ๋ ์๋ฏธ์
๋๋ค. ์ด๋ฒ์๋ ๋ณ์ b
์ ๋ํด์ ์๋ฃํ์ ํ์ธํด๋ด
์๋ค.
print(type(b))
#
# <class 'float'>
<class 'float'>
๋ผ๋ ๋ด์ฉ์ด ์ถ๋ ฅ๋๋๋ฐ์. ์ด๋ ํด๋น ๋ณ์์ ์๋ฃํ์ด ์ค์ํ์ด๋ผ๋ ์๋ฏธ์
๋๋ค. ์ค์ํ์ด๋ ์์์ ์ด ์๋ ์ซ์๋ผ๋ ์๋ฏธ์
๋๋ค.
์ซ์ ์๋ฃํ(int
, float
)์ ์ฐ์ฐ
์ซ์ ์๋ฃํ(int, float)๋ผ๋ฆฌ๋ ์ฌ์น์ฐ์ฐ์ ํฌํจํ ๋ค์ํ ์ฐ์ฐ์ด ๊ฐ๋ฅํฉ๋๋ค.
์ฐ์ฐ ๊ธฐํธ | ์๋ฏธ |
---|---|
+ | ๋ง์ |
- | ๋บ์ |
* | ๊ณฑํ๊ธฐ |
** | ๊ฑฐ๋ญ์ ๊ณฑ |
/ | ๋๋๊ธฐ |
// | ๋๋๊ธฐ ์ฐ์ฐ ํ ์์์ ์ดํ์ ์๋ ๋ฒ๋ฆฌ๊ณ ์ ์ ๋ถ๋ถ๋ง ๋จ๊ธด๋ค. |
% | ๋๋๊ธฐ ์ฐ์ฐ ํ์ ๋๋จธ์ง๋ฅผ ๊ตฌํ๋ค. |
์ค์ต์ ํตํด ์ดํดํด๋ด
์๋ค. a
์ b
๋ผ๋ ๋ณ์๋ฅผ ์ ์ธํด๋๊ณ ๋ง์
์ ์ํํด๋ด
์๋ค.
a = 7
b = 2
print(a + b)
#
# 9
7๊ณผ 2์ ๋ง์ ๊ฒฐ๊ณผ๋ก 9๋ฅผ ์ป์ต๋๋ค. ๋บ์ ์ ํด๋ณผ๊น์? 7์์ 2๋ฅผ ๋นผ๋ด ์๋ค.
print(a - b)
#
# 5
5๋ผ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์ต๋๋ค. ์ด๋ฒ์๋ %
์ฐ์ฐ์ ํด๋ด
์๋ค. ์์ ํ์ ์ค๋ช
์ ๋ฐ๋ฅด๋ฉด %
์ฐ์ฐ์ ๋๋๊ธฐ๋ฅผ ์ํํ ํ์ ๋๋จธ์ง๋ฅผ ์ป๋๋ค๊ณ ํฉ๋๋ค.
print(a % b)
#
# 1
1์ด๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์ต๋๋ค. ์ค์ ๋ก 7์ 2๋ก ๋๋๋ฉด ๋ชซ์ 3์ด๊ณ , ๋๋จธ์ง๋ 1์ด๊ธฐ๋๋ฌธ์ ๋๋ค. ๋๋จธ์ง ์ฐ์ฐ๋ค์ ๋ํด์๋ ์ง์ ์ค์ต์ ์งํํด๋ณด์ธ์. a๊ฐ 5์ด๊ณ b๊ฐ 2์ผ ๋, ์ ์๊ฐ ์ค์ ๋ก ์ํํด์ ์ป์ ๊ฒฐ๊ณผ๋ค์ ๋ค์๊ณผ ๊ฐ์์ต๋๋ค.
์ฐ์ฐ ๊ธฐํธ | ์์ | ๊ฒฐ๊ณผ | ์๋ฏธ |
---|---|---|---|
+ | a + b | 7 | a์ b๋ฅผ ๋ํ๋ค |
- | a - b | 3 | a์์ b๋ฅผ ๋บ๋ค |
* | a * b | 10 | a์ b๋ฅผ ๊ณฑํ๋ค |
** | a ** b | 25 | a์ b์ ๊ฑฐ๋ญ์ ๊ณฑ |
/ | a / b | 2.5 | a์์ b๋ฅผ ๋๋๋ค |
// | a // b | 2 | a์์ b๋ฅผ ๋๋๊ณ ์ ์ ๋ถ๋ถ๋ง ๋จ๊ธด๋ค (๋๋์ ์ฐ์ฐ ํ์ ๋ชซ) |
% | a % b | 1 | a์์ b๋ฅผ ๋๋๊ณ ๋๋จธ์ง ๋ถ๋ถ๋ง ๋จ๊ธด๋ค (๋๋์ ์ฐ์ฐ ํ์ ๋๋จธ์ง) |
์ ๋ฆฌ
- ๋ณ์๋ ์ด๋ค ๊ฐ์ ๋ด์๋๋ ์์๋ก ๋น์ ํ ์ ์๋ค.
๋ณ์ = ์ด๋ค ๊ฐ
๊ณผ ๊ฐ์ด ์ฌ์ฉํ ์ ์๋ค. - ์๋ฅผ ๋ค์ด
a = 3
์ด๋ผ๊ณ ๋ณ์ a๋ฅผ ์ ์ธ ํ์print(a)
๋ฅผ ์คํํ๋ฉด 3์ด ์ถ๋ ฅ๋๋ค. ์๋ฃํ
์ ํ์ด์ฌ์์ ์ฌ์ฉํ๋๋ฐ์ดํฐ์ ํ์
์ ์๋ฏธํ๋ค. ๋ค์ํ ๋ฐ์ดํฐ ํ์ ์ด ์กด์ฌํ๋๋ฐ ์ซ์ ์๋ฃํ์ ๋ํด์ ํ์ตํ๋ค.- ์ซ์ ์๋ฃํ์ ํฌ๊ฒ ์์์ ์ด ์๋ ์ ์ํ ์๋ฃํ
int
์ ์์์ ์ด ์๋ ์ค์ํ ์๋ฃํfloat
๋ก ๋๋๋ค. - ํ์ด์ฌ์์ ์๋ฃํ์ ํ์ธํ๋ ๋ฐฉ๋ฒ์
type(๋ณ์)
์ด๋ค. - ์ซ์ ์๋ฃํ์ ๋ค์ํ ์ฐ์ฐ์ด ๊ฐ๋ฅํ๋ค.
03. ๋ฌธ์์ด๊ณผ Bool ์๋ฃํ
ํ์ด์ฌ์์๋ ๋ค์ํ ์๋ฃํ(๋ฐ์ดํฐ ํ์ )์ด ์กด์ฌํฉ๋๋ค. ๋ํ์ ์ธ ์๋ฃํ์ผ๋ก๋ ์ ์์ ์ค์๋ฅผ ๋ํ๋ด๋ ์ซ์ ์๋ฃํ, ์ฐธ๊ณผ ๊ฑฐ์ง์ ๋ํ๋ด๋ ๋ถ(boolean) ์๋ฃํ, ๋ฌธ์๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด ์๋ฃํ, ์ฌ๋ฌ ์๋ฃ๋ฅผ ํ์์ ๋ฐ๋ผ์ ๋ค๋ฅด๊ฒ ๋ํ๋ด๋ ๋ฆฌ์คํธ, ๋์ ๋๋ฆฌ, ์ธํธ, ํํ ์ด ์กด์ฌํฉ๋๋ค.
์ฌ๊ธฐ์๋ ๋ฌธ์์ด ์๋ฃํ๊ณผ ๋ถ ์๋ฃํ์ ๋ํด์ ์ ๋ฆฌํด๋ด ์๋ค.
๋ฌธ์์ด ์๋ฃํ
๋ถ(Boolean) ์๋ฃํ
๋ถ(Boolean) ์๋ฃํ์ ์ฐธ/๊ฑฐ์ง์ ๋ํ๋
๋๋ค. ๋ค์๊ณผ ๊ฐ์ด ๋๋ฌธ์๋ก ์์ํ๋ True๋ False๋ฅผ ๋ณ์๋ก ์ ์ธํ๊ณ type()
์ ํตํด์ ์๋ฃํ์ ํ์ธํด๋ณด๋ฉด bool
์ด๋ผ๊ณ ์ถ๋ ฅ๋๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ์ด๋ ๋ถ ์๋ฃํ์ด๋ ์๋ฏธ์
๋๋ค.
x = True # ์ฐธ
y = False # ๊ฑฐ์ง
type(x)
#
# bool
๋๋ฌธ์๋ก ์์ํ๋ True
์ False
๋ ๋ถ ์๋ฃํ์ด์ง๋ง ์๋ฌธ์๋ก ์์ํ๋ true์ false๋ ๋ถ ์๋ฃํ์ด ์๋๋๋ค. ์ด๊ฒ ์ด๋ค ์ฐจ์ด์ธ์ง ์ค์ต์ ํตํด ์ดํดํด๋ด
์๋ค. ๋ง์ฝ ๋๋ฌธ์๊ฐ ์๋๋ผ ์๋ฌธ์๋ก true๋ false๋ฅผ ๋ณ์์ ๊ฐ์ผ๋ก ์ ์ธํ ๊ฒฝ์ฐ์๋ ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค.
z = true
#
# NameError: name 'true' is not defined
์ด๋ ์๋ฌธ์๋ก ์ฐ๋ฉด ๋ถ ์๋ฃํ์ผ๋ก ์ธ์ํ์ง ์๊ณ ์ผ์ข ์ ๋ณ์๋ช ์ด๋ผ๊ณ ์ธ์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ง๊ธ ๋์ค๋ ์๋ฌ๋ฅผ ํด์ํด๋ณด๋ฉด true๋ผ๋ ๋ณ์๋ ์ ์ธ๋ ์ ์ด ์๋๋ฐ ํธ์ถํ๊ณ ์์ด์ ๋ฐ์ํ ์๋ฌ์ ๋๋ค. ์ด๋ฒ์๋ ๋๋ฌธ์ True๋ฅผ ๋ณ์๋ช ์ผ๋ก ์ฌ์ฉํด๋ด ์๋ค.
True = 1
#
# File "<ipython-input-16-1598b51f0f76>", line 1
# True = 1
# ^
# SyntaxError: can't assign to keyword
์ด๋ฒ์๋ ์๋ฌ๊ฐ ๋ฐ์ํ๋๋ฐ ํด๋น ์๋ฌ๋ True๋ False๋ ๋ถ ์๋ฃํ์ ์๋ฏธํ๋ฉฐ ๋ถ ์๋ฃํ์ ๋ณ์๋ช ์ผ๋ก ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ๋ ์๋ฌ์ ๋๋ค.
04. ํ๋ค์ค, ๋ํ์ด, ๋งทํ๋กฏ๋ฆฝ
๋ฐ์ดํฐ ๋ถ์์ ์ํ ํ์ ํจํค์ง ์ผ๋์ฅ์ด ์์ต๋๋ค. ๋ฐ๋ก Pandas์ Numpy ๊ทธ๋ฆฌ๊ณ Matplotlib์ ๋๋ค. ์ธ ๊ฐ์ ํจํค์ง ๋ชจ๋ ์๋์ฝ๋ค๋ฅผ ์ค์นํ๋ค๋ฉด ์ถ๊ฐ ์ค์น ์์ด ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด ์ธ ๊ฐ์ ํจํค์ง๋ฅผ ๊ฐ๋จํ ์ค์ตํด๋ด ์๋ค.
ํ๋ค์ค(Pandas)
ํ๋ค์ค(Pandas)๋ ํ์ด์ฌ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ํ์ด์ฌ์ ์ด์ฉํ ๋ฐ์ดํฐ ๋ถ์๊ณผ ๊ฐ์ ์์ ์์ ํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์๋ ค์ ธ์์ต๋๋ค. ์ฐธ๊ณ ํ ์ ์๋ Pandas ๋งํฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๐๋งํฌ: http://pandas.pydata.org/pandas-docs/stable
์๋์ฝ๋ค๋ฅผ ์ค์นํ์ง ์์๋ค๋ฉด ์๋์ ์ปค๋งจ๋๋ก Pandas๋ฅผ ๋ณ๋ ์ค์นํ ์ ์์ต๋๋ค.
pip install pandas
ipython
#
import pandas as pd
pd.__version__
# Out[2]: '0.25.1'
Pandas์ ๊ฒฝ์ฐ pd๋ผ๋ ๋ช ์นญ์ผ๋ก ์ํฌํธํ๋ ๊ฒ์ด ๊ด๋ก์ ๋๋ค.
import pandas as pd
Pandas๋ ์ด ์ธ ๊ฐ์ง์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ์๋ฆฌ์ฆ(Series)
- ๋ฐ์ดํฐํ๋ ์(DataFrame)
- ํจ๋(Panel)
์ด ์ค ๋ฐ์ดํฐํ๋ ์์ด ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ฉฐ ์ฌ๊ธฐ์๋ ์๋ฆฌ์ฆ์ ๋ฐ์ดํฐํ๋ ์์ ๋ํด์ ๋ค๋ฃน๋๋ค.
์๋ฆฌ์ฆ(Series)
์๋ฆฌ์ฆ ํด๋์ค๋ 1์ฐจ์ ๋ฐฐ์ด์ ๊ฐ(values)์ ๊ฐ ๊ฐ์ ๋์๋๋ ์ธ๋ฑ์ค(index)๋ฅผ ๋ถ์ฌํ ์ ์๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ๊ณ ์์ต๋๋ค.
sr = pd.Series([17000, 18000, 1000, 5000],
index=["ํผ์", "์นํจ", "์ฝ๋ผ", "๋งฅ์ฃผ"])
print('์๋ฆฌ์ฆ ์ถ๋ ฅ :')
print('-'*15)
print(sr)
#
#
# ์๋ฆฌ์ฆ ์ถ๋ ฅ :
# ---------------
# ํผ์ 17000
# ์นํจ 18000
# ์ฝ๋ผ 1000
# ๋งฅ์ฃผ 5000
# dtype: int64
๊ฐ(values
)๊ณผ ์ธ๋ฑ์ค(index
)๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
print('์๋ฆฌ์ฆ์ ๊ฐ : {}'.format(sr.values))
print('์๋ฆฌ์ฆ์ ์ธ๋ฑ์ค : {}'.format(sr.index))
#
# ์๋ฆฌ์ฆ์ ๊ฐ : [17000 18000 1000 5000]
# ์๋ฆฌ์ฆ์ ์ธ๋ฑ์ค : Index(['ํผ์', '์นํจ', '์ฝ๋ผ', '๋งฅ์ฃผ'], dtype='object')
๋ฐ์ดํฐํ๋ ์(DataFrame)
๋ฐ์ดํฐํ๋ ์์ 2์ฐจ์ ๋ฆฌ์คํธ๋ฅผ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌํฉ๋๋ค. 2์ฐจ์์ด๋ฏ๋ก ํ๋ฐฉํฅ ์ธ๋ฑ์ค(index
)์ ์ด๋ฐฉํฅ ์ธ๋ฑ์ค(column
)๊ฐ ์กด์ฌํฉ๋๋ค. ๋ค์ ๋งํด ํ๊ณผ ์ด์ ๊ฐ์ง๋ ์๋ฃ๊ตฌ์กฐ์
๋๋ค. ์๋ฆฌ์ฆ๊ฐ ์ธ๋ฑ์ค(index
)์ ๊ฐ(values
)์ผ๋ก ๊ตฌ์ฑ๋๋ค๋ฉด, ๋ฐ์ดํฐํ๋ ์์ ์ด(columns
)๊น์ง ์ถ๊ฐ๋์ด ์ด(columns
), ์ธ๋ฑ์ค(index
), ๊ฐ(values
)์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ด ์ธ ๊ฐ์ ๊ตฌ์ฑ ์์๋ก๋ถํฐ ๋ฐ์ดํฐํ๋ ์์ ์์ฑํด๋ด
์๋ค.
values = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
index = ['one', 'two', 'three']
columns = ['A', 'B', 'C']
df = pd.DataFrame(values, index=index, columns=columns)
print('๋ฐ์ดํฐํ๋ ์ ์ถ๋ ฅ :')
print('-'*18)
print(df)
#
#
# ๋ฐ์ดํฐํ๋ ์ ์ถ๋ ฅ :
# ------------------
# A B C
# one 1 2 3
# two 4 5 6
# three 7 8 9
์์ฑ๋ ๋ฐ์ดํฐํ๋ ์์ผ๋ก๋ถํฐ ์ธ๋ฑ์ค(index
), ๊ฐ(values
), ์ด(columns
)์ ๊ฐ๊ฐ ์ถ๋ ฅํด๋ณด๊ฒ ์ต๋๋ค.
print('๋ฐ์ดํฐํ๋ ์์ ์ธ๋ฑ์ค : {}'.format(df.index))
print('๋ฐ์ดํฐํ๋ ์์ ์ด์ด๋ฆ: {}'.format(df.columns))
print('๋ฐ์ดํฐํ๋ ์์ ๊ฐ :')
print('-'*18)
print(df.values)
#
# ๋ฐ์ดํฐํ๋ ์์ ์ธ๋ฑ์ค : Index(['one', 'two', 'three'], dtype='object')
# ๋ฐ์ดํฐํ๋ ์์ ์ด์ด๋ฆ: Index(['A', 'B', 'C'], dtype='object')
# ๋ฐ์ดํฐํ๋ ์์ ๊ฐ :
# ------------------
# [[1 2 3]
# [4 5 6]
# [7 8 9]]
๋ฐ์ดํฐํ๋ ์์ ์์ฑ
๋ฐ์ดํฐํ๋ ์์ ๋ฆฌ์คํธ(List), ์๋ฆฌ์ฆ(Series), ๋์ ๋๋ฆฌ(dict), Numpy์ ndarrays, ๋ ๋ค๋ฅธ ๋ฐ์ดํฐํ๋ ์์ผ๋ก๋ถํฐ ์์ฑํ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ๋ฆฌ์คํธ์ ๋์ ๋๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐํ๋ ์์ ์์ฑํด๋ณด๊ฒ ์ต๋๋ค. ์ฐ์ ์ด์ค ๋ฆฌ์คํธ๋ก ์์ฑํ๋ ๊ฒฝ์ฐ์ ๋๋ค.
# ๋ฆฌ์คํธ๋ก ์์ฑํ๊ธฐ
data = [
['1000', 'Steve', 90.72],
['1001', 'James', 78.09],
['1002', 'Doyeon', 98.43],
['1003', 'Jane', 64.19],
['1004', 'Pilwoong', 81.30],
['1005', 'Tony', 99.14],
]
df = pd.DataFrame(data)
print(df)
#
# 0 1 2
# 0 1000 Steve 90.72
# 1 1001 James 78.09
# 2 1002 Doyeon 98.43
# 3 1003 Jane 64.19
# 4 1004 Pilwoong 81.30
# 5 1005 Tony 99.14
์์ฑ๋ ๋ฐ์ดํฐํ๋ ์์ ์ด(columns)์ ์ง์ ํด์ค ์ ์์ต๋๋ค. ์ด์ด๋ฆ์ ์ง์ ํ๊ณ ์ถ๋ ฅํด๋ด ์๋ค.
df = pd.DataFrame(data, columns=['ํ๋ฒ', '์ด๋ฆ', '์ ์'])
print(df)
#
# ํ๋ฒ ์ด๋ฆ ์ ์
# 0 1000 Steve 90.72
# 1 1001 James 78.09
# 2 1002 Doyeon 98.43
# 3 1003 Jane 64.19
# 4 1004 Pilwoong 81.30
# 5 1005 Tony 99.14
ํ์ด์ฌ ์๋ฃ๊ตฌ์กฐ ์ค ํ๋์ธ ๋์ ๋๋ฆฌ(dictionary)๋ฅผ ํตํด ๋ฐ์ดํฐํ๋ ์์ ์์ฑํด๋ณด๊ฒ ์ต๋๋ค.
# ๋์
๋๋ฆฌ๋ก ์์ฑํ๊ธฐ
data = {
'ํ๋ฒ' : ['1000', '1001', '1002', '1003', '1004', '1005'],
'์ด๋ฆ' : [ 'Steve', 'James', 'Doyeon', 'Jane', 'Pilwoong', 'Tony'],
'์ ์': [90.72, 78.09, 98.43, 64.19, 81.30, 99.14]
}
df = pd.DataFrame(data)
print(df)
#
# ํ๋ฒ ์ด๋ฆ ์ ์
# 0 1000 Steve 90.72
# 1 1001 James 78.09
# 2 1002 Doyeon 98.43
# 3 1003 Jane 64.19
# 4 1004 Pilwoong 81.30
# 5 1005 Tony 99.14
๋ฐ์ดํฐํ๋ ์ ์กฐํํ๊ธฐ
์๋์ ๋ช ๋ น์ด๋ ๋ฐ์ดํฐํ๋ ์์์ ์ํ๋ ๊ตฌ๊ฐ๋ง ํ์ธํ๊ธฐ ์ํ ๋ช ๋ น์ด๋ก์ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ฉ๋๋ค.
df.head(n)
- ์ ๋ถ๋ถ์ n๊ฐ๋ง ๋ณด๊ธฐdf.tail(n)
- ๋ท ๋ถ๋ถ์ n๊ฐ๋ง ๋ณด๊ธฐdf['์ด์ด๋ฆ']
- ํด๋น๋๋ ์ด์ ํ์ธ
์์์ ์ฌ์ฉํ ๋ฐ์ดํฐํ๋ ์์ ๊ทธ๋๋ก ์ฌ์ฉํ์ฌ ์ค์ตํด๋ด ์๋ค.
# ์ ๋ถ๋ถ์ 3๊ฐ๋ง ๋ณด๊ธฐ
print(df.head(3))
#
# ํ๋ฒ ์ด๋ฆ ์ ์
# 0 1000 Steve 90.72
# 1 1001 James 78.09
# 2 1002 Doyeon 98.43
# ๋ท ๋ถ๋ถ์ 3๊ฐ๋ง ๋ณด๊ธฐ
print(df.tail(3))
#
# ํ๋ฒ ์ด๋ฆ ์ ์
# 3 1003 Jane 64.19
# 4 1004 Pilwoong 81.30
# 5 1005 Tony 99.14
# 'ํ๋ฒ'์ ํด๋น๋๋ ์ด์ ๋ณด๊ธฐ
print(df['ํ๋ฒ'])
#
# 0 1000
# 1 1001
# 2 1002
# 3 1003
# 4 1004
# 5 1005
# Name: ํ๋ฒ, dtype: object
์ธ๋ถ ๋ฐ์ดํฐ ์ฝ๊ธฐ
Pandas๋ CSV, ํ ์คํธ, Excel, SQL, HTML, JSON ๋ฑ ๋ค์ํ ๋ฐ์ดํฐ ํ์ผ์ ์ฝ๊ณ ๋ฐ์ดํฐ ํ๋ ์์ ์์ฑํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด csv ํ์ผ์ ์ฝ์ ๋๋ pandas.read_csv()
๋ฅผ ํตํด ์ฝ์ ์ ์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ example.csv
ํ์ผ์ด ์๋ค๊ณ ํฉ์๋ค.
df = pd.read_csv('example.csv')
print(df)
#
# student id name score
# 0 1000 Steve 90.72
# 1 1001 James 78.09
# 2 1002 Doyeon 98.43
# 3 1003 Jane 64.19
# 4 1004 Pilwoong 81.30
# 5 1005 Tony 99.14
์ด ๊ฒฝ์ฐ ์ธ๋ฑ์ค๊ฐ ์๋์ผ๋ก ๋ถ์ฌ๋ฉ๋๋ค. ์ธ๋ฑ์ค๋ฅผ ์ถ๋ ฅํด๋ณด๊ฒ ์ต๋๋ค.
print(df.index)
#
# RangeIndex(start=0, stop=6, step=1)
๋ํ์ด(Numpy)
๋ํ์ด(Numpy)๋ ์์น ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ํ์ด์ฌ ํจํค์ง์ ๋๋ค. Numpy์ ํต์ฌ์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ ๋ค์ฐจ์ ํ๋ ฌ ์๋ฃ๊ตฌ์กฐ์ธ ndarray๋ฅผ ํตํด ๋ฒกํฐ ๋ฐ ํ๋ ฌ์ ์ฌ์ฉํ๋ ์ ํ ๋์ ๊ณ์ฐ์์ ์ฃผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. Numpy๋ ํธ์์ฑ๋ฟ๋ง ์๋๋ผ, ์๋๋ฉด์์๋ ์์ ํ์ด์ฌ์ ๋นํด ์๋์ ์ผ๋ก ๋น ๋ฅด๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค.
์๋์ฝ๋ค๋ฅผ ์ค์นํ์ง ์์๋ค๋ฉด ์๋์ ์ปค๋งจ๋๋ก Numpy๋ฅผ ๋ณ๋ ์ค์นํ ์ ์์ต๋๋ค.
pip install numpy
ipython
...
import numpy as np
np.__version__
# Out[2]: '1.16.5'
Numpy์ ๊ฒฝ์ฐ np
๋ผ๋ ๋ช
์นญ์ผ๋ก ์ํฌํธํ๋ ๊ฒ์ด ๊ด๋ก์
๋๋ค.
import numpy as np
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์ฐจ์ ๋ฐฐ์ด์ ๋ง๋ค์ด๋ณด๊ฒ ์ต๋๋ค. ์ฃผ์ํ ์ ์ array() ์์ ํ๋์ ๋ฆฌ์คํธ๋ง ๋ค์ด๊ฐ๋ฏ๋ก ๋ฆฌ์คํธ์ ๋ฆฌ์คํธ๋ฅผ ๋ฃ์ด์ผ ํฉ๋๋ค.
# 2์ฐจ์ ๋ฐฐ์ด
mat = np.array([[10, 20, 30], [ 60, 70, 80]])
print(mat)
# [[10 20 30]
# [60 70 80]]
๋ ๋ฐฐ์ด์ ํ์ ์ ํ์ธํด๋ด ์๋ค.
print('vec์ ํ์
:',type(vec))
print('mat์ ํ์
:',type(mat))
# vec์ ํ์
: <class 'numpy.ndarray'>
# mat์ ํ์
: <class 'numpy.ndarray'>
๋์ผํ๊ฒ ํ์
์ด numpy.ndarray
๋ผ๊ณ ๋์ค๊ฒ ๋ฉ๋๋ค. Numpy ๋ฐฐ์ด์๋ ์ถ์ ๊ฐ์(ndim
)์ ํฌ๊ธฐ(shape
)๋ผ๋ ๊ฐ๋
์ด ์กด์ฌํ๋๋ฐ, ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ์ ํํ ์์งํ๋ ๊ฒ์ ๋ฅ ๋ฌ๋์์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ถ์ ๊ฐ์์ ํฌ๊ธฐ๊ฐ ์ด๋ค ์๋ฏธ๋ฅผ ๊ฐ์ง๋์ง์ ๋ํด์๋ ๋จธ์ ๋ฌ๋ ์ฑํฐ์์ ๋ฒกํฐ์ ํ๋ ฌ ์ฐ์ฐ์ ์ค๋ช
ํ ๋ ์ธ๊ธํ๊ฒ ์ต๋๋ค.
print('vec์ ์ถ์ ๊ฐ์ :',vec.ndim) # ์ถ์ ๊ฐ์ ์ถ๋ ฅ
print('vec์ ํฌ๊ธฐ(shape) :',vec.shape) # ํฌ๊ธฐ ์ถ๋ ฅ
#
# vec์ ์ถ์ ๊ฐ์ : 1
# vec์ ํฌ๊ธฐ(shape) : (5,)
print('mat์ ์ถ์ ๊ฐ์ :',mat.ndim) # ์ถ์ ๊ฐ์ ์ถ๋ ฅ
print('mat์ ํฌ๊ธฐ(shape) :',mat.shape) # ํฌ๊ธฐ ์ถ๋ ฅ
#
# mat์ ์ถ์ ๊ฐ์ : 2
# mat์ ํฌ๊ธฐ(shape) : (2, 3)
ndarray
์ ์ด๊ธฐํ
์์์๋ ๋ฆฌ์คํธ๋ฅผ ๊ฐ์ง๊ณ ndarray
๋ฅผ ์์ฑํ์ง๋ง ndarray
๋ฅผ ๋ง๋๋ ๋ค์ํ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ์กด์ฌํฉ๋๋ค. ์ด ์ธ์๋ ๋ค์ํ ๋ฐฉ๋ฒ์ด ์กด์ฌํ๋ฏ๋ก ํ์์ ๋ฐ๋ผ์ ๋ค์ํ ๋ฐฐ์ด์ ์์ฑํ ์ ์์ต๋๋ค.
np.zeros()
๋ ๋ฐฐ์ด์ ๋ชจ๋ ์์์ 0์ ์ฝ์
ํฉ๋๋ค.
# ๋ชจ๋ ๊ฐ์ด 0์ธ 2x3 ๋ฐฐ์ด ์์ฑ.
zero_mat = np.zeros((2,3))
print(zero_mat)
#
# [[0. 0. 0.]
# [0. 0. 0.]]
np.ones()
๋ ๋ฐฐ์ด์ ๋ชจ๋ ์์์ 1์ ์ฝ์
ํฉ๋๋ค.
# ๋ชจ๋ ๊ฐ์ด 1์ธ 2x3 ๋ฐฐ์ด ์์ฑ.
one_mat = np.ones((2,3))
print(one_mat)
#
# [[1. 1. 1.]
# [1. 1. 1.]]
np.full()
์ ๋ฐฐ์ด์ ์ฌ์ฉ์๊ฐ ์ง์ ํ ๊ฐ์ ์ฝ์
ํฉ๋๋ค.
# ๋ชจ๋ ๊ฐ์ด ํน์ ์์์ธ ๋ฐฐ์ด ์์ฑ. ์ด ๊ฒฝ์ฐ 7.
same_value_mat = np.full((2,2), 7)
print(same_value_mat)
#
# [[7 7]
# [7 7]]
np.eye()
๋ ๋๊ฐ์ ์ผ๋ก๋ 1์ด๊ณ ๋๋จธ์ง๋ 0์ธ 2์ฐจ์ ๋ฐฐ์ด์ ์์ฑํฉ๋๋ค.
# ๋๊ฐ์ ๊ฐ์ด 1์ด๊ณ ๋๋จธ์ง ๊ฐ์ด 0์ธ 2์ฐจ์ ๋ฐฐ์ด์ ์์ฑ.
eye_mat = np.eye(3)
print(eye_mat)
#
# [[1. 0. 0.]
# [0. 1. 0.]]
# [0. 0. 1.]]
np.random.random()
์ ์์์ ๊ฐ์ ๊ฐ์ง๋ ๋ฐฐ์ด์ ์์ฑํฉ๋๋ค.
# ์์์ ๊ฐ์ผ๋ก ์ฑ์์ง ๋ฐฐ์ด ์์ฑ
random_mat = np.random.random((2,2)) # ์์์ ๊ฐ์ผ๋ก ์ฑ์์ง ๋ฐฐ์ด ์์ฑ
print(random_mat)
#
# [[0.3111881 0.72996102]
# [0.65667734 0.40758328]]
์ด ์ธ์๋ Numpy์๋ ๋ฐฐ์ด์ ๋ง๋๋ ๋ค์ํ ๋ฐฉ๋ฒ์ด ์กด์ฌํ๋ฏ๋ก ํ์ํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด์ ์์ฑํ ์ ์์ต๋๋ค.
np.arange()
np.arange(n)
์ 0๋ถํฐ n-1๊น์ง์ ๊ฐ์ ๊ฐ์ง๋ ๋ฐฐ์ด์ ์์ฑํฉ๋๋ค.
# 0๋ถํฐ 9๊น์ง
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
์ฉ ์ฆ๊ฐํ๋ ๋ฐฐ์ด์ ์์ฑํฉ๋๋ค.
# 1๋ถํฐ 9๊น์ง +2์ฉ ์ ์ฉ๋๋ ๋ฒ์
n = 2
range_n_step_vec = np.arange(1, 10, n)
print(range_n_step_vec)
#
#[1 3 5 7 9]
np.reshape()
np.reshape()
์ ๋ด๋ถ ๋ฐ์ดํฐ๋ ๋ณ๊ฒฝํ์ง ์์ผ๋ฉด์ ๋ฐฐ์ด์ ๊ตฌ์กฐ๋ฅผ ๋ฐ๊ฟ๋๋ค. 0๋ถํฐ 29๊น์ง์ ์ซ์๋ฅผ ์์ฑํ๋ arange(30)์ ์ํํ ํ, ์์์ ๊ฐ์๊ฐ 30๊ฐ์ด๋ฏ๋ก 5ํ 6์ด์ ํ๋ ฌ๋ก ๋ณ๊ฒฝํด๋ด
์๋ค.
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]]
Numpy ์ฌ๋ผ์ด์ฑ
ndarray
๋ฅผ ํตํด ๋ง๋ ๋ค์ฐจ์ ๋ฐฐ์ด์ ํ์ด์ฌ์ ์๋ฃ๊ตฌ์กฐ์ธ ๋ฆฌ์คํธ์ฒ๋ผ ์ฌ๋ผ์ด์ฑ(slicing) ๊ธฐ๋ฅ์ ์ง์ํฉ๋๋ค. ์ฌ๋ผ์ด์ฑ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ํน์ ํ์ด๋ ์ด๋ค์ ์์๋ค์ ์ ๊ทผํ ์ ์์ต๋๋ค.
mat = np.array([[1, 2, 3], [4, 5, 6]])
print(mat)
#
# [[1 2 3]
# [4 5 6]]
# ์ฒซ๋ฒ์งธ ํ ์ถ๋ ฅ
slicing_mat = mat[0, :]
print(slicing_mat)
#
#[1 2 3]
# ๋๋ฒ์งธ ์ด ์ถ๋ ฅ
slicing_mat = mat[:, 1]
print(slicing_mat)
#
# [2 5]
Numpy ์ ์ ์ธ๋ฑ์ฑ(integer indexing)
์ฌ๋ผ์ด์ฑ์ ์ฌ์ฉํ๋ฉด ๋ฐฐ์ด๋ก๋ถํฐ ๋ถ๋ถ ๋ฐฐ์ด์ ์ถ์ถํ ์ ์์ง๋ง, ์ฐ์์ ์ด์ง ์์ ์์๋ก ๋ฐฐ์ด์ ๋ง๋ค ๊ฒฝ์ฐ์๋ ์ฌ๋ผ์ด์ฑ์ผ๋ก๋ ๋ง๋ค ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด์ 2ํ 2์ด์ ์์์ 5ํ 5์ด์ ์์๋ฅผ ๋ฝ์์ ํ๋์ ๋ฐฐ์ด๋ก ๋ง๋ค๊ณ ์ ํ๋ ๊ฒฝ์ฐ๊ฐ ๊ทธ๋ ์ต๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ์๋ ์ธ๋ฑ์ฑ์ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์ธ๋ฑ์ฑ์ ์ํ๋ ์์น์ ์์๋ค์ ๋ฝ์ ์ ์์ต๋๋ค.
mat = np.array([[1, 2], [4, 5], [7, 8]])
print(mat)
#
#[[1 2]
# [4 5]
# [7 8]]
ํน์ ์์น์ ์์๋ง์ ๊ฐ์ ธ์๋ด ์๋ค.
# 1ํ 0์ด์ ์์
# => 0๋ถํฐ ์นด์ดํธํ๋ฏ๋ก ๋๋ฒ์งธ ํ ์ฒซ๋ฒ์งธ ์ด์ ์์.
print(mat[1, 0])
#
# 4
ํน์ ์์น์ ์์ ๋ ๊ฐ๋ฅผ ๊ฐ์ ธ์ ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋ค์ด๋ด ์๋ค.
# mat[[2ํ, 1ํ],[0์ด, 1์ด]]
# ๊ฐ ํ๊ณผ ์ด์ ์์ ๋งค์นญํ๋ฉด 2ํ 0์ด, 1ํ 1์ด์ ๋ ๊ฐ์ ์์.
indexing_mat = mat[[2, 1],[0, 1]]
print(indexing_mat)
#
# [7 5]
Numpy ์ฐ์ฐ
Numpy๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐฐ์ด๊ฐ ์ฐ์ฐ์ ์์ฝ๊ฒ ์ํํ ์ ์์ต๋๋ค. ๋ง์
, ๋บ์
, ๊ณฑ์
, ๋๋์
์ ์ํด์๋ ์ฐ์ฐ์ +
, -
, *
, /
๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ๋๋ np.add()
, np.subtract()
, np.multiply()
, np.divide()
๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
x = np.array([1,2,3])
y = np.array([4,5,6])
# result = np.add(x, y)์ ๋์ผ.
result = x + y
print(result)
#
# [5 7 9]
# result = np.subtract(x, y)์ ๋์ผ.
result = x - y
print(result)
#
# [-3 -3 -3]
# result = np.multiply(result, x)์ ๋์ผ.
result = result * x
print(result)
#
# [-3 -6 -9]
# result = np.divide(result, x)์ ๋์ผ.
result = result / x
print(result)
#
# [-3. -3. -3.]
์์์ *
๋ฅผ ํตํด ์ํํ ๊ฒ์ ์์๋ณ ๊ณฑ์
๋๋ค. Numpy์์ ๋ฒกํฐ์ ํ๋ ฌ๊ณฑ ๋๋ ํ๋ ฌ๊ณฑ์ ์ํด์๋ dot()
์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
mat1 = np.array([[1,2],[3,4]])
mat2 = np.array([[5,6],[7,8]])
mat3 = np.dot(mat1, mat2)
print(mat3)
#
# [[19 22]
# [43 50]]
๋งทํ๋กฏ๋ฆฝ(Matplotlib)
๋งทํ๋กฏ๋ฆฝ(Matplotlib)์ ๋ฐ์ดํฐ๋ฅผ ์ฐจํธ(chart
)๋ ํ๋กฏ(plot
)์ผ๋ก ์๊ฐํํ๋ ํจํค์ง์
๋๋ค. ๋ฐ์ดํฐ ๋ถ์์์ Matplotlib์ ๋ฐ์ดํฐ ๋ถ์ ์ด์ ์ ๋ฐ์ดํฐ ์ดํด๋ฅผ ์ํ ์๊ฐํ๋, ๋ฐ์ดํฐ ๋ถ์ ํ์ ๊ฒฐ๊ณผ๋ฅผ ์๊ฐํํ๊ธฐ ์ํด์ ์ฌ์ฉ๋ฉ๋๋ค. ์๋์ฝ๋ค๋ฅผ ์ค์นํ์ง ์์๋ค๋ฉด ์๋์ ์ปค๋งจ๋๋ก Matplotlib๋ฅผ ๋ณ๋ ์ค์นํ ์ ์์ต๋๋ค.
pip install matplotlib
ipython
...
import matplotlib as mpl
mpl.__version__
# Out[2]: '2.2.3'
Matplotlib์ ๋ค ์ค์นํ์๋ค๋ฉด Matplotlib์ ์ฃผ์ ๋ชจ๋์ธ pyplot๋ฅผ ๊ด๋ก์ plt๋ผ๋ ๋ช ์นญ์ผ๋ก ์ํฌํธํด๋ด ์๋ค.
import matplotlib.pyplot as plt
๋ผ์ธ ํ๋กฏ ๊ทธ๋ฆฌ๊ธฐ
plot()์ ๋ผ์ธ ํ๋กฏ์ ๊ทธ๋ฆฌ๋ ๊ธฐ๋ฅ์ ์ํํฉ๋๋ค. plot()์ x์ถ๊ณผ y์ถ์ ๊ฐ์ ๊ธฐ์ฌํ๊ณ ๊ทธ๋ฆผ์ ํ์ํ๋ show()๋ฅผ ํตํด์ ์๊ฐํํด๋ด ์๋ค. ๊ทธ๋ํ์๋ title('์ ๋ชฉ')์ ์ฌ์ฉํ์ฌ ์ ๋ชฉ์ ์ง์ ํ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ๊ทธ๋ํ์ 'test'๋ผ๋ ์ ๋ชฉ์ ๋ฃ์ด๋ด ์๋ค. ์ฃผํผํฐ ๋ ธํธ๋ถ์์๋ show()๋ฅผ ์ฌ์ฉํ์ง ์๋๋ผ๋ ๊ทธ๋ํ๊ฐ ์๋์ผ๋ก ๋ ๋๋ง ๋๋ฏ๋ก ๊ทธ๋ํ๊ฐ ์๊ฐํ๊ฐ ๋์ง๋ง ๋ค๋ฅธ ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ฌ์ฉํ ๋๋ฅผ ๊ฐ์ ํ์ฌ show()๋ฅผ ์ฝ๋์ ์ฝ์ ํ์์ต๋๋ค.
plt.title('test')
plt.plot([1,2,3,4],[2,4,8,6])
plt.show()
์ถ ๋ ์ด๋ธ ์ฝ์ ํ๊ธฐ
x์ถ๊ณผ y์ถ ๊ฐ๊ฐ์ ์ถ์ด๋ฆ์ ์ฝ์
ํ๊ณ ์ถ๋ค๋ฉด xlabel('๋ฃ๊ณ ์ถ์ ์ถ์ด๋ฆ')
๊ณผ ylabel('๋ฃ๊ณ ์ถ์ ์ถ์ด๋ฆ')
์ ์ฌ์ฉํฉ๋๋ค. ์์ ๊ทธ๋ํ์ hours์ score๋ผ๋ ์ถ์ด๋ฆ์ ๊ฐ๊ฐ ์ถ๊ฐํด๋ด
์๋ค.
plt.title('test')
plt.plot([1,2,3,4],[2,4,8,6])
plt.xlabel('hours')
plt.ylabel('score')
plt.show()
๋ผ์ธ ์ถ๊ฐ์ ๋ฒ๋ก ์ฝ์ ํ๊ธฐ
๋ค์์ plot()
์ ํ๋์ ๊ทธ๋ํ์ ๋ํ๋ผ ์ ์์ต๋๋ค. ์ฌ๋ฌ๊ฐ์ ๋ผ์ธ ํ๋กฏ์ ๋์์ ์ฌ์ฉํ ๊ฒฝ์ฐ์๋ ๊ฐ ์ ์ด ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ด๋์ง๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ๋ฒ๋ก(legend)๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
plt.title('students')
plt.plot([1,2,3,4],[2,4,8,6])
plt.plot([1.5,2.5,3.5,4.5],[3,5,8,10]) # ๋ผ์ธ ์๋ก ์ถ๊ฐ
plt.xlabel('hours')
plt.ylabel('score')
plt.legend(['A student', 'B student']) # ๋ฒ๋ก ์ฝ์
plt.show()
์ข ๋ ๋ค์ํ ํํ์ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฌ๋ ์ค์ต์ ๋ฅ ๋ฌ๋ ์ฑํฐ์ ์ธ๊ณต ์ ๊ฒฝ๋ง ํ์ด๋ณด๊ธฐ ์ค์ต์์ ํ์ธํ ์ ์์ต๋๋ค.