# ๐Ÿ Python Study Log: NumPy, Matplotlib, and Random Walks

Yeeunยท2025๋…„ 4์›” 21์ผ

Python

๋ชฉ๋ก ๋ณด๊ธฐ
10/31

๐Ÿ Python Study Log: NumPy, Matplotlib, and Random Walks

์˜ค๋Š˜์€ Python์„ ํ™œ์šฉํ•œ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”์™€ ๊ฐ„๋‹จํ•œ ์ˆ˜ํ•™ ์—ฐ์‚ฐ์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ numpy, matplotlib, ๊ทธ๋ฆฌ๊ณ  random walk์— ๋Œ€ํ•ด ๊ถ๊ธˆํ–ˆ๋˜ ๊ฒƒ๋“ค์„ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ด์š”. ์ €์ฒ˜๋Ÿผ ์ดˆ๋ณด์ž๋ถ„๋“ค๊ป˜ ๋„์›€์ด ๋˜๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค ๐ŸŒฑ


๐Ÿ“Œ 1. plt.plot()๊ณผ ์„  ๊ตต๊ธฐ

import matplotlib.pyplot as plt

squares = [1, 4, 9, 16, 25]
plt.plot(squares, linewidth=3)
  • linewidth=3๋Š” ์„ ์˜ ๊ตต๊ธฐ์ž…๋‹ˆ๋‹ค. boldness (๋‘๊ป˜)๋ฅผ ์กฐ์ ˆํ•˜๋Š” ์˜ต์…˜์ด์—์š”.
  • plot(x, y)์ฒ˜๋Ÿผ x๊ฐ’๊ณผ y๊ฐ’์„ ๋‘˜ ๋‹ค ์ค„ ์ˆ˜ ์žˆ์–ด์š”. y๋งŒ ์ฃผ๋ฉด x๋Š” ์ž๋™์œผ๋กœ [0, 1, 2, ...]๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๊ณต์‹ ๋ฌธ์„œ ์ฐธ๊ณ  โ€“ plt.plot


๐Ÿ“Œ 2. ์™œ numpy๋ฅผ ์“ฐ๋Š” ๊ฑธ๊นŒ?

๋ฆฌ์ŠคํŠธ๋‚˜ range๋Š” ์ง์ ‘ ์—ฐ์‚ฐ์ด ์–ด๋ ต์Šต๋‹ˆ๋‹ค:

x = range(10)
y = x + 1  # โŒ ์˜ค๋ฅ˜ ๋ฐœ์ƒ

ํ•˜์ง€๋งŒ numpy๋ฅผ ์“ฐ๋ฉด ํ•œ ์ค„๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค:

import numpy as np

x = np.arange(10)
y = x + 1  # โœ… ๊ฐ€๋Šฅ

โž• np.linspace vs np.arange

  • np.arange(start, stop, step) โ†’ ์ •์ˆ˜ ๋‹จ์œ„๋‚˜ ์ผ์ • ๊ฐ„๊ฒฉ
  • np.linspace(start, stop, num) โ†’ start๋ถ€ํ„ฐ stop๊นŒ์ง€ ๊ท ๋“ฑํ•œ ๊ฐ„๊ฒฉ์œผ๋กœ num๊ฐœ์˜ ๊ฐ’

์˜ˆ์‹œ:

x = np.linspace(-10, 10, 20)
y = x**2
plt.scatter(x, y)
plt.show()

๐Ÿ“Œ 3. plt.scatter() ์ขŒํ‘œ ํ•ด์„

plt.scatter([3, 5], [2, 8])
  • ์ด๊ฑด (3,2), (5,8) ๋‘ ์ ์„ ์˜๋ฏธํ•ด์š”.
  • ์ฒซ ๋ฒˆ์งธ ๋ฆฌ์ŠคํŠธ๋Š” x์ขŒํ‘œ, ๋‘ ๋ฒˆ์งธ๋Š” y์ขŒํ‘œ์ž…๋‹ˆ๋‹ค.
  • ๊ทธ๋ž˜์„œ (3, 5), (2, 8)์œผ๋กœ ํ•ด์„๋˜์ง„ ์•Š์Šต๋‹ˆ๋‹ค!

์ง๊ด€์ ์œผ๋กœ ์ดํ•ดํ•˜๊ณ  ์‹ถ์œผ๋ฉด ์ด๋ ‡๊ฒŒ ํ•ด๋ณด์„ธ์š”:

points = [(3, 5), (2, 8)]
x = [p[0] for p in points]
y = [p[1] for p in points]
plt.scatter(x, y)

๐Ÿ“Œ 4. RandomWalk ํด๋ž˜์Šค ๋ถ„์„

x_direction = choice([1, -1])
x_distance = choice([0, 1, 2, 3, 4])
x_step = x_direction * x_distance

์ด ๋ถ€๋ถ„์ด ์กฐ๊ธˆ ํ—ท๊ฐˆ๋ ธ๋Š”๋ฐ, ์„ค๋ช…ํ•˜์ž๋ฉด:

  • choice([1, -1]): ๋ฐฉํ–ฅ (โ†’ ๋˜๋Š” โ†)
  • choice([0~4]): ์–ผ๋งˆ๋‚˜ ๋ฉ€๋ฆฌ ๊ฐˆ์ง€
  • ๊ณฑํ•˜๋ฉด ์ตœ์ข…์ ์ธ ์ด๋™๋Ÿ‰์ด ๋ฉ๋‹ˆ๋‹ค

์˜ˆ๋ฅผ ๋“ค์–ด x_direction = -1์ด๊ณ  x_distance = 3์ด๋ฉด x_step = -3 โ†’ ์™ผ์ชฝ์œผ๋กœ 3์นธ ์ด๋™์ด์ฃ !


๐Ÿง  ์˜ค๋Š˜ ๋ฐฐ์šด ํ•ต์‹ฌ ์š”์•ฝ

๊ฐœ๋…์„ค๋ช…
numpy๋ฐฐ์—ด ์—ฐ์‚ฐ์„ ๋น ๋ฅด๊ณ  ์ง๊ด€์ ์œผ๋กœ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ
matplotlib.pyplot.plot()์„  ๊ทธ๋ž˜ํ”„
matplotlib.pyplot.scatter()์  ๊ทธ๋ž˜ํ”„, (x, y) ๋ฆฌ์ŠคํŠธ๋กœ ์ขŒํ‘œ ์„ค์ •
np.linspace()๋“ฑ๊ฐ„๊ฒฉ ์ˆซ์ž ๋ฐฐ์—ด ์ƒ์„ฑ
RandomWalk์˜ choice()๋ฐฉํ–ฅ๊ณผ ๊ฑฐ๋ฆฌ ์„ ํƒ์œผ๋กœ ๋žœ๋ค ์ด๋™ ๊ตฌํ˜„

ํ•„์š”ํ•œ ๋‚ด์šฉ์„ ์งง๊ฒŒ ์ •๋ฆฌํ•˜๋ฉด์„œ๋„ ์ดํ•ดํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•ด๋ดค์–ด์š”. ์ €์ฒ˜๋Ÿผ Python์„ ๊ณต๋ถ€ํ•˜๋Š” ๋ถ„๋“ค์—๊ฒŒ ๋„์›€์ด ๋˜์—ˆ๊ธธ ๋ฐ”๋ผ๋ฉฐ, ๋” ๊ถ๊ธˆํ•œ ๊ฒŒ ์ƒ๊ธฐ๋ฉด ๋˜ ์ •๋ฆฌํ•ด๋ณผ๊ฒŒ์š” ๐Ÿ˜Š

0๊ฐœ์˜ ๋Œ“๊ธ€