๊ฐœ๋ฐœ Code/ํŒŒ์ด์ฌ Python

[Python][numpy] Numpy ๊ธฐ์ดˆ๋ถ€ํ„ฐ ํ™œ์šฉ๊นŒ์ง€

5hr1rnp 2025. 2. 8. 19:36
๋ฐ˜์‘ํ˜•

 

Python์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ํ•„์ˆ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ํ•˜๋‚˜๊ฐ€ Numpy์ด๋‹ค.

๋Œ€๊ทœ๋ชจ ๋ฐฐ์—ด ๋ฐ ํ–‰๋ ฌ ์—ฐ์‚ฐ์„ ๋น ๋ฅด๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์œผ๋ฉฐ, ๊ณผํ•™ ์—ฐ์‚ฐ, ๋จธ์‹ ๋Ÿฌ๋‹, ๋ฐ์ดํ„ฐ ๋ถ„์„ ๋“ฑ์— ํญ๋„“๊ฒŒ ์‚ฌ์šฉ๋œ๋‹ค.


1. Numpy๋ž€?


  • Numpy(NumPy, Numerical Python)๋Š” ๋‹ค์ฐจ์› ๋ฐฐ์—ด ๊ฐ์ฒด(ndarray)๋ฅผ ์ง€์›ํ•˜๋ฉฐ, ์ด๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์—ฐ์‚ฐํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•จ
  • Python์˜ ๊ธฐ๋ณธ ๋ฆฌ์ŠคํŠธ(list)๋ณด๋‹ค ๋น ๋ฅด๊ณ , ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•จ

Numpy์˜ ํŠน์ง•

  • ๊ณ ์† ์—ฐ์‚ฐ: C ์–ธ์–ด๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ์–ด ๋ฆฌ์ŠคํŠธ๋ณด๋‹ค ๋น ๋ฆ„
  • ๋‹ค์ฐจ์› ๋ฐฐ์—ด ์ง€์›: ๋ฒกํ„ฐ, ํ–‰๋ ฌ ์—ฐ์‚ฐ์„ ์‰ฝ๊ฒŒ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ
  • ๋ฐฉ๋Œ€ํ•œ ์ˆ˜ํ•™ ๋ฐ ์„ ํ˜•๋Œ€์ˆ˜ ์—ฐ์‚ฐ ๊ธฐ๋Šฅ: ๋‹ค์–‘ํ•œ ํ•จ์ˆ˜ ์ œ๊ณต
  • ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€์˜ ํ˜ธํ™˜์„ฑ: Pandas, SciPy, TensorFlow ๋“ฑ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋จ

2. Numpy ์„ค์น˜ ๋ฐ ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•


Numpy๋Š” pip์„ ์ด์šฉํ•˜์—ฌ ๊ฐ„๋‹จํžˆ ์„ค์น˜ ๊ฐ€๋Šฅํ•จ

# conda config --env --add channels conda-forge
# conda install numpy
pip install numpy

 

์„ค์น˜ ํ›„ Numpy๋ฅผ importํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

import numpy as np

728x90
๋ฐ˜์‘ํ˜•

3. Numpy ๋ฐฐ์—ด ์ƒ์„ฑ


3.1 ๊ธฐ๋ณธ ๋ฐฐ์—ด ์ƒ์„ฑ

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
print(arr)
print(type(arr))  

# <class 'numpy.ndarray'>

3.2 ๋‹ค์ฐจ์› ๋ฐฐ์—ด ์ƒ์„ฑ

arr2d = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2d)

# [[1 2 3]
#  [4 5 6]]

3.3 ๋ฐฐ์—ด์˜ ํฌ๊ธฐ ํ™•์ธ

print(arr.shape)  # (5,)
print(arr2d.shape)  # (2, 3)

4. Numpy ์ฃผ์š” ๊ธฐ๋Šฅ


4.1 ๊ธฐ๋ณธ ์—ฐ์‚ฐ

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])

print(arr1 + arr2)  # [5 7 9]
print(arr1 * arr2)  # [4 10 18]
print(arr1 - arr2)  # [-3 -3 -3]

4.2 ํ†ต๊ณ„ ํ•จ์ˆ˜

arr = np.array([1, 2, 3, 4, 5])
print(np.mean(arr))  # ํ‰๊ท : 3.0
print(np.median(arr))  # ์ค‘์•™๊ฐ’: 3.0
print(np.std(arr))  # ํ‘œ์ค€ํŽธ์ฐจ: 1.414...

4.3 ๋ฐฐ์—ด ๋ณ€ํ˜•

arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.reshape(3, 2))  # (2,3) ๋ฐฐ์—ด์„ (3,2)๋กœ ๋ณ€๊ฒฝ

# [[1 2]
#  [3 4]
#  [5 6]]

4.4 ๋ฐฐ์—ด ์Šฌ๋ผ์ด์‹ฑ

arr = np.array([10, 20, 30, 40, 50])
print(arr[1:4])  # [20 30 40]

4.5 ๋งˆ์Šคํ‚น ์—ฐ์‚ฐ

arr = np.array([10, 20, 30, 40, 50])
print(arr[arr > 25])  # [30 40 50]

5. ํ™œ์šฉ ์˜ˆ์ œ


5.1 ํ–‰๋ ฌ ๊ณฑ์…ˆ

A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
print(np.dot(A, B))

# [[19 22]
#  [43 50]]

5.2 ๋‚œ์ˆ˜ ์ƒ์„ฑ

np.random.seed(0)  # ๋‚œ์ˆ˜ ๊ณ ์ •
random_arr = np.random.rand(3, 3)  # 3x3 ๋‚œ์ˆ˜ ๋ฐฐ์—ด ์ƒ์„ฑ
print(random_arr)

# [[0.5488135  0.71518937 0.60276338]
#  [0.54488318 0.4236548  0.64589411]
#  [0.43758721 0.891773   0.96366276]]
๋ฐ˜์‘ํ˜•