๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ๋ฐœ/Python

(Python) NumPy ๋ฐฐ์—ด ์ƒ์„ฑ

by gomdeng 2024. 12. 3.

๐Ÿถ NumPy ๋ฐฐ์—ด ์ƒ์„ฑ

๐Ÿšฉ numpy.ndarray
 - NumPy์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋กœ, ๋‹ค์ฐจ์› ๋ฐฐ์—ด์„ ํ‘œํ˜„ํ•˜๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ
 โœ”๏ธ ์ฃผ์š”ํŠน์ง•
  1) ๊ณ ์ •๋œ ํฌ๊ธฐ: ์ƒ์„ฑ ์‹œ ์ง€์ •๋œ ํฌ๊ธฐ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€, ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝ ์‹œ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด ์ƒ์„ฑ
  2) ๋™์ผํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…:  ๋ฐฐ์—ด ๋‚ด์˜ ๋ชจ๋“  ์š”์†Œ๋Š” ๊ฐ™์€ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๊ฐ€์ง
  3) ํšจ์œจ์„ฑ๊ณผ ์„ฑ๋Šฅ: ๋‚ด๋ถ€์ ์œผ๋กœ ์ตœ์ ํ™”๋œ C์™€ Fortran ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น ๋ฅธ ๋ฐฐ์—ด ์—ฐ์‚ฐ์„ ์ง€์›
 โœ”๏ธ ์†์„ฑ (Attribute)
  1) ndarray.ndim: ๋ฐฐ์—ด์˜ ์ฐจ์› ์ˆ˜
  2) ndarray.shape: ๋ฐฐ์—ด์˜ ํ˜•ํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํŠœํ”Œ, ๊ฐ ์ฐจ์›์˜ ํฌ๊ธฐ๋ฅผ ๋‚˜ํƒ€๋ƒ„
  3) ndarray.size: ๋ฐฐ์—ด์˜ ์ „์ฒด ์š”์†Œ ์ˆ˜
  4) ndarray.dtype: ๋ฐฐ์—ด์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…
  5) ndarray.itemsize: ๋ฐฐ์—ด ๊ฐ ์š”์†Œ์˜ ๋ฐ”์ดํŠธ ํฌ๊ธฐ

๐Ÿšฉ ๋ฐฐ์—ด ์ƒ์„ฑ (ndarray ์‚ฌ์šฉ)
    import numpy as np

    โœ”๏ธ 1. ์ผ๋ฐ˜ ๋ฐฐ์—ด :: array()
    list_arr = np.array([1, 2, 3, 4, 5])
    list_arr # array([1, 2, 3, 4, 5])
    
    โœ”๏ธ 2. 0์œผ๋กœ ์ฑ„์›Œ์ง„ ๋ฐฐ์—ด :: zeros()
    zeros_arr = np.zeros(5)  # 5๊ฐœ์˜ 0์œผ๋กœ ๊ตฌ์„ฑ๋œ ๋ฐฐ์—ด
    zeros_arr # array([0., 0., 0., 0., 0.])
    
    โœ”๏ธ 3. 1๋กœ ์ฑ„์›Œ์ง„ ๋ฐฐ์—ด :: ones()
    ones_arr = np.ones(5)  # 5๊ฐœ์˜ 1๋กœ ๊ตฌ์„ฑ๋œ ๋ฐฐ์—ด
    ones_arr # array([1., 1., 1., 1., 1.])
    
    โœ”๏ธ 4. ํŠน์ • ๋ฒ”์œ„์— ๋ฐฐ์—ด :: arange()
    range_arr = np.arange(10) # 0๋ถ€ํ„ฐ 9๊นŒ์ง€์˜ ์ˆซ์ž๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฐฐ์—ด
    range_arr # array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

    step_arr = np.arange(0, 11, 2) # 0๋ถ€ํ„ฐ 10๊นŒ์ง€ 2์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” ๋ฐฐ์—ด
    step_arr # array([ 0,  2,  4,  6,  8, 10])
    
    โœ”๏ธ 5. ๋žœ๋ค ๋ฐฐ์—ด :: random.rand()
    random_arr = np.random.rand(5) # 0๊ณผ 1 ์‚ฌ์ด์˜ ๋žœ๋ค ๊ฐ’
    random_arr # array([0.57675881, 0.91983182..])
    
    โœ”๏ธ 6. ๋ชจ๋“  ์š”์†Œ๊ฐ€ ํŠน์ • ๊ฐ’์ธ ๋ฐฐ์—ด (shape ๊ตฌ์กฐ ์ง€์›) :: full()
    full_arr = np.full((5,), 7)  # 5๊ฐœ์˜ 7๋กœ ๊ตฌ์„ฑ๋œ ๋ฐฐ์—ด
    full_arr
    
    โœ”๏ธ 7. ๋‹จ์œ„ ํ–‰๋ ฌ ์ƒ์„ฑ
    identity_matrix = np.eye(3) # 3x3 ๋‹จ์œ„ ํ–‰๋ ฌ ์ƒ์„ฑ
    identity_matrix
    
    โœ”๏ธ ndarray ์†์„ฑ ์˜ˆ์‹œ
    list_arr = np.array([1, 2, 3, 4, 5, 6])
    matrix_arr = list_arr.reshape((2,3))
    matrix_arr   
    # array([[1, 2, 3],
    #       [4, 5, 6]])
    1) matrix_arr.ndim      # 2: ๋ฐฐ์—ด์˜ ์ฐจ์› ์ˆ˜
    2) matrix_arr.shape     # (2, 3): ๋ฐฐ์—ด์˜ ํ˜•ํƒœ ํŠœํ”Œ, ๊ฐ ์ฐจ์›์˜ ํฌ๊ธฐ (2ํ–‰ 3์—ด)
    3) matrix_arr.size      # 6: ๋ฐฐ์—ด์˜ ์ „์ฒด ์š”์†Œ ์ˆ˜
    4) matrix_arr.dtype     # dtype('int64'): ๋ฐฐ์—ด์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…
    5) matrix_arr.itemsize  # 8: ๋ฐฐ์—ด ๊ฐ ์š”์†Œ์˜ ๋ฐ”์ดํŠธ ํฌ๊ธฐ