IT ์•Œ์•„๊ฐ€๊ธฐ

[์ฝ”๋”ฉ ๊ธฐ์ดˆ] ํŒŒ์ด์ฌ - ๋ฆฌ์ŠคํŠธ(list)์™€ ๋ฐฐ์—ด(array) & ๋Œ€ํ‘œ์ ์ธ ๋ฐฐ์—ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, Numpy์— ๋Œ€ํ•ด์„œ!

์žก์‹๋ƒฅ์ด 2025. 2. 11. 15:30

์•ž์œผ๋กœ ๋Œ€ํ‘œ์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ธ ํŒŒ์ด์ฌ์— ๋Œ€ํ•ด์„œ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์ •๋ฆฌํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ณด๋ ค๊ณ  ํ•œ๋‹ค!!

 

์˜ค๋Š˜์€ ๋ฐ์ดํ„ฐ๊ณผํ•™์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์ธ ๋ฆฌ์ŠคํŠธ์™€ ๋ฐฐ์—ด์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ•˜๊ณ , ์•„์ฃผ์•„์ฃผ ๋งŽ์ด ๋“ค์–ด๋ณด์•˜๋˜ ํŒŒ์ด์ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ Numpy์— ๋Œ€ํ•ด์„œ ํŠนํžˆ๋‚˜ ๋” ์•Œ์•„๋ณด๋ ค๊ณ  ํ•œ๋‹ค. 

 

๋Œ€ํ‘œ์ ์ธ Array Library Numpy


๋ฆฌ์ŠคํŠธ List 

ํŒŒ์ด์ฌ์˜ ๊ธฐ๋ณธ ๋‚ด์žฅ ์ž๋ฃŒํ˜•์œผ๋กœ, ๋‹ค์–‘ํ•œ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋‚˜์—ดํ˜• ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ.

(+) ์œ ์—ฐ์„ฑ์ด ๋†’์Œ. ๋‹ค์–‘ํ•œ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•จ. ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์œผ๋กœ ํฌ๊ธฐ๊ฐ€ ์กฐ์ ˆ ๊ฐ€๋Šฅํ•จ. 

(-) ๋ฐฐ์—ด๋ณด๋‹ค๋Š” ์—ฐ์‚ฐ ์†๋„๊ฐ€ ๋А๋ฆผ 

 

์˜ˆ์‹œ : 1๋ถ€ํ„ฐ 10๊นŒ์ง€ ๋ฐฐ์—ด๋œ data๋ผ๋Š” ๋ฆฌ์ŠคํŠธ

data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

 

์˜ˆ์‹œ : ๋‹ค์–‘ํ•œ ํƒ€์ž…์˜ ๋ฆฌ์ŠคํŠธ

my_list = [1, "apple", 3.14, True]

 

์˜ˆ์‹œ : ๋ฆฌ์ŠคํŠธ์˜ ๋ฆฌ์ŠคํŠธ (2์ฐจ์› ๋ฆฌ์ŠคํŠธ)

2_list = [[1, a], [3, c], [5, e]]

์ธ๋ฑ์Šค index

๋ฆฌ์ŠคํŠธ์˜ ๋ฐฐ์—ด์˜ ์œ„์น˜๋ฅผ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์˜๋ฏธํ•จ. ์ฒซ๋ฒˆ์งธ ์š”์†Œ๋Š” ์ธ๋ฑ์Šค 0์ž„์„ ๊ธฐ์–ตํ•  ๊ฒƒ.

์˜ˆ์‹œ : data ๋ผ๋Š” ๋ฆฌ์ŠคํŠธ์˜ ๋‹ค์„ฏ๋ฒˆ์งธ ์ƒ˜ํ”Œ์„ ์„ ํƒํ•˜๊ณ  ์‹ถ์Œ 

์ •๋‹ต : data[4]

 

์Šฌ๋ผ์ด์‹ฑ slicing

์ฝœ๋ก (:) ์„ ๊ฐ€์šด๋ฐ ๋‘๊ณ  ์ธ๋ฑ์Šค์˜ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์›์†Œ๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ. ๋‘๋ฒˆ์งธ ์ธ๋ฑ์Šค์˜ ์›์†Œ๋Š” ํฌํ•จ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•  ๊ฒƒ. ๋งˆ์ง€๋ง‰ ์›์†Œ๊นŒ์ง€ ํฌํ•จํ•  ๊ฒฝ์šฐ ๋‘๋ฒˆ์งธ ์ธ๋ฑ์Šค๋Š” ์ƒ๋žตํ•ด๋„ ๋จ 

 

์˜ˆ์‹œ : data ๋ผ๋Š” ๋ฆฌ์ŠคํŠธ์˜ ์ฒซ๋ฒˆ์งธ๋ถ€ํ„ฐ ๋‹ค์„ฏ๋ฒˆ์งธ๊นŒ์ง€์˜ ์ƒ˜ํ”Œ์„ ์„ ํƒํ•˜๊ณ  ์‹ถ์Œ

์ •๋‹ต : data[0:5]

 

์˜ˆ์‹œ : data ๋ผ๋Š” ๋ฆฌ์ŠคํŠธ์˜ ์„ธ๋ฒˆ์งธ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰๊นŒ์ง€์˜ ์ƒ˜ํ”Œ์„ ์„ ํƒํ•˜๊ณ  ์‹ถ์Œ 

์ •๋‹ต : data[2: ]

 


๋ฐฐ์—ด Array

๋™์ผํ•œ ๋ฐ์ดํ„ฐ  ํƒ€์ž…์„ ์—ฐ์†์ ์œผ๋กœ ๋‚˜์—ดํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ

 

 

(+) ๋น ๋ฅธ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ๊ณผ ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•จ. 

(-) ๋™์ผํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…๋งŒ ์ €์žฅ ๊ฐ€๋Šฅํ•จ.

 

์˜ˆ์‹œ: 1์ฐจ์› ๋ฐฐ์—ด 

1_list = [1, 2, 3, 4, 5]

 

์˜ˆ์‹œ: 2์ฐจ์› ๋ฐฐ์—ด(ํ–‰๋ ฌ)

2_list = [[1, 2], [3, 4], [5, 6]]

 

๋ฐฐ์—ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ : ๋„˜ํŒŒ์ด numpy

๋ฐฐ์—ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ž€ ๋ฐฐ์—ด์„ ๋” ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์œผ๋กœ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. 

๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๊ณ  ๋ณ€ํ™˜ํ•˜๋ฉฐ, ์ˆ˜ํ•™์  ์—ฐ์‚ฐ์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ, ๋ฐ์ดํ„ฐ ์Šฌ๋ผ์ด์‹ฑ๊ณผ ํ•„ํ„ฐ๋ง ๊ธฐ๋Šฅ, ๊ทธ๋ฆฌ๊ณ  ํ†ต๊ณ„์™€ ์„ ํ˜•๋Œ€์ˆ˜ ๊ธฐ๋Šฅ๋“ค์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค. 

 

ํŒŒ์ด์ฌ์˜ ๋Œ€ํ‘œ์ ์ธ ๋ฐฐ์—ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—๋Š” "Numpy", "Pandas", "SciPy" ๋“ฑ์ด ์žˆ๋‹ค. ๋”ฅ๋Ÿฌ๋‹ ํ”„๋ ˆ์ž„์›Œํฌ์ธ TensorFlow๋„ ๊ณ ์ฐจ์› ๋ฐฐ์—ด์ธ Tensor๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ผ๋Š” ์ ์—์„œ ๋ฐฐ์—ด๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.  

Numpy๋Š” ๋ฐฐ์—ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ผ๋ฉด Pandas๋Š” Table ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ๊ฐ•ํ™”ํ•œ numpy ๊ธฐ๋ฐ˜ ํˆด์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. SciPy๋Š” Numpy ๊ธฐ๋ฐ˜์ด๊ธฐ๋Š” ํ•˜์ง€๋งŒ ๋ณด๋‹ค ๋” ๋ณต์žกํ•œ ์ˆ˜ํ•™์  ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค. 

 

ํŒŒ์ด์ฌ์˜ ๊ธฐ๋ณธ์ ์ธ ์ž๋ฃŒํ˜•์ธ ๋ฆฌ์ŠคํŠธ๋กœ 2์ฐจ์› ๋ฐฐ์—ด๊นŒ์ง€๋Š” ๋งŒ๋“ค ์ˆ˜ ์žˆ์ง€๋งŒ ์ฐจ์›์ด ๋Š˜ ์ˆ˜๋ก ํ‘œํ˜„ํ•˜๊ธฐ๊ฐ€ ๋” ์–ด๋ ค์›Œ์ง„๋‹ค. ๋„˜ํŒŒ์ด๋Š” ์ด๋Ÿฐ ๊ณ ์ฐจ์›์˜ ๋ฐฐ์—ด์„ ์†์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ๋“ค์„ ์ œ๊ณตํ•œ๋‹ค. ๋‹ค์Œ์€ ๋Œ€ํ‘œ์ ์ธ Numpy์˜ ๋ฉ”์„œ๋“œ์™€ attribute๋“ค์„ ์ •๋ฆฌํ•œ ํ‘œ์ด๋‹ค. 

 

Method / Attribute ๊ธฐ๋Šฅ  ์˜ˆ์‹œ  ๊ฒฐ๊ณผ 
array() ๋ฆฌ์ŠคํŠธ๋ฅผ NumPy ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ np.array([1, 2, 3]) [1 2 3]
shape ๋ฐฐ์—ด์˜ ๊ตฌ์กฐ(์ฐจ์›) ํ™•์ธ arr.shape (3,)
* 3๊ฐœ์˜ ์š”์†Œ๋ฅผ ๊ฐ€์ง„ 1์ฐจ์› ๋ฐฐ์—ด 
dtype ๋ฐ์ดํ„ฐ ํƒ€์ž… ํ™•์ธ arr.dtype int64
reshape() ๋ฐฐ์—ด์˜ ์ฐจ์› ๋ณ€๊ฒฝ arr.reshape(2, 3) [[1 2 3], [4 5 6]]
arange() ์ผ์ •ํ•œ ๊ฐ„๊ฒฉ์˜ ์ˆซ์ž ์ƒ์„ฑ np.arange(0, 10, 2)
np.arange(6)
[0 2 4 6 8]
[0, 1, 2, 3, 4, 5]
linspace() ๊ตฌ๊ฐ„์„ ๊ท ๋“ฑํ•˜๊ฒŒ ๋‚˜๋ˆˆ ๊ฐ’ ์ƒ์„ฑ np.linspace(0, 1, 5) [0. 0.25 0.5 0.75 1.]
zeros() 0์œผ๋กœ ์ฑ„์›Œ์ง„ ๋ฐฐ์—ด ์ƒ์„ฑ np.zeros((2, 3)) [[0. 0. 0.], [0. 0. 0.]]
ones() 1๋กœ ์ฑ„์›Œ์ง„ ๋ฐฐ์—ด ์ƒ์„ฑ np.ones((3,)) [1. 1. 1.]
eye() ๋‹จ์œ„ ํ–‰๋ ฌ ์ƒ์„ฑ np.eye(3) [[1. 0. 0.], [0. 1. 0.], [0. 0. 1.]]
random.rand() 0~1 ์‚ฌ์ด์˜ ๋‚œ์ˆ˜ ๋ฐฐ์—ด ์ƒ์„ฑ np.random.rand(2, 2) [[0.56, 0.12], [0.78, 0.34]]
*0์—์„œ 1 ์‚ฌ์ด 2๊ฐœ ์ƒ˜ํ”Œ, 2๊ฐœ ์š”์†Œ 
random.randint() ์ง€์ • ๋ฒ”์œ„ ๋‚ด ์ •์ˆ˜ ๋‚œ์ˆ˜ ์ƒ์„ฑ np.random.randint(0, 10, size=(2, 3)) [[3, 7, 1], [5, 9, 0]]
*0์—์„œ 10 ์‚ฌ์ด 2๊ฐœ ์ƒ˜ํ”Œ, 3๊ฐœ  ์š”์†Œ 
sum() ๋ฐฐ์—ด ์š”์†Œ์˜ ํ•ฉ๊ณ„ arr.sum() 15
*arr = [1, 2, 3, 4, 5] ์ผ ๋•Œ 
mean() ๋ฐฐ์—ด ์š”์†Œ์˜ ํ‰๊ท  arr.mean() 3.0
*arr = [1, 2, 3, 4, 5] ์ผ ๋•Œ 
max() / min() ์ตœ๋Œ€๊ฐ’ ๋ฐ ์ตœ์†Œ๊ฐ’ ๋ฐ˜ํ™˜ arr.max(), arr.min() 5, 1
*arr = [1, 2, 3, 4, 5] ์ผ ๋•Œ 
argmax() ์ตœ๋Œ€๊ฐ’์˜ ์ธ๋ฑ์Šค ๋ฐ˜ํ™˜ arr.argmax() 4 (์ตœ๋Œ€๊ฐ’ 5์˜ ์ธ๋ฑ์Šค)
*arr = [1, 2, 3, 4, 5] ์ผ ๋•Œ 
sort() ๋ฐฐ์—ด ์ •๋ ฌ np.sort([3, 1, 4, 2]) [1 2 3 4]
concatenate() ๋ฐฐ์—ด ๊ฒฐํ•ฉ : ์ฒซ๋ฒˆ์งธ ์ฐจ์›์„ ๋”ฐ๋ผ ๋ฐฐ์—ด์„ ์—ฐ๊ฒฐํ•จ.  np.concatenate(([1, 2], [3, 4])) [1 2 3 4]
hstack()
/ vstack()
/ colum_stack()
์ˆ˜ํ‰์œผ๋กœ ํ•ฉ์นจ 
/์ˆ˜์ง์œผ๋กœ ํ•ฉ์นจ 
/ ์—ด ๊ธฐ์ค€์œผ๋กœ ์Œ“๋Š” ํ•จ์ˆ˜ 
np.hstack((a, b))
np.vstack((a, b))
np.column_stack((a,b))
[1 2 3 4] 
[[1 2], [3 4]]
[[1, 3], [2, 4]]
*a= [1, 2], b=[3, 4]
unique() ์ค‘๋ณต ์ œ๊ฑฐ ํ›„ ๊ณ ์œ  ๊ฐ’ ๋ฐ˜ํ™˜ np.unique([1, 2, 2, 3, 4, 4, 5]) [1 2 3 4 5]
where() ์กฐ๊ฑด์— ๋”ฐ๋ผ ์ธ๋ฑ์Šค ๋˜๋Š” ๊ฐ’ ๋ฐ˜ํ™˜ np.where(arr > 2) (array([2, 3, 4]),)
transpose() ๋ฐฐ์—ด์˜ ์ฐจ์›์„ ์ „์น˜ (ํ–‰↔์—ด) arr.T [[1 4], [2 5], [3 6]]
dot() ํ–‰๋ ฌ ๊ณฑ์…ˆ ์ˆ˜ํ–‰ np.dot(A, B) [[19 22], [43 50]]
flatten() ๋‹ค์ฐจ์› ๋ฐฐ์—ด์„ 1์ฐจ์›์œผ๋กœ ๋ณ€ํ™˜ arr.flatten() [1 2 3 4 5 6]

 

์—ฌ๊ธฐ์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํŒ๋“ค์ด๋‹ค! 

  • arrange() ํ•จ์ˆ˜๋Š” arange(N) ์ฒ˜๋Ÿผ ์ •์ˆ˜๊ฐ’๋งŒ ๋„ฃ์œผ๋ฉด 0๋ถ€ํ„ฐ N-1๊นŒ์ง€ 1์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” ๋ฐฐ์—ด์„ ๋งŒ๋“ ๋‹ค. 
  • seed() : ๋žœ๋ค ํ•จ์ˆ˜๋“ค ์ค‘์€ ์‹คํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ, ์ผ๊ด€๋œ ๊ฒฐ๊ณผ๋ฅผ ์›ํ•˜๋ฉด ์ดˆ๊ธฐ์— ๋žœ๋ค์‹œ๋“œ(Random seed)๋ฅผ ๋™์ผํ•œ ์ˆซ์ž๋กœ ์ง€์ •ํ•˜๋ฉด ๋œ๋‹ค. np.random.seed(N) ์ด๋Ÿฐ์‹์œผ๋กœ ์ง€์ •ํ•˜๋ฉด ๋œ๋‹ค. 
  • random() ์ค‘ random.shuffle() ํ•จ์ˆ˜๋Š” ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์„ ๋ฌด์ž‘์œ„๋กœ ์„ž๋Š”๋‹ค. 
  • stack()๋ฅ˜์˜ ํ•จ์ˆ˜๋“ค์ด ์ƒ์„ฑํ•˜๋Š” ๊ฒฐ๊ณผ๋Š” ํŠœํ”Œ ํ˜•ํƒœ์ด๋‹ค. ์—ฌ๊ธฐ์„œ ํŠœํ”Œ์€ ๋ฆฌ์ŠคํŠธ์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ, ํ•œ๋ฒˆ ๋งŒ๋“ค์–ด์ง„ ํŠœํ”Œ์€ ์ˆ˜์ •์ด ์•ˆ๋œ๋‹ค๋Š” ํŠน์„ฑ์„ ๊ฐ€์ง„๋‹ค. 

๋„˜ํŒŒ์ด๋Š” ๋งŽ์€ ํŒŒ์ด์ฌ์˜ ๊ณผํ•™ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ‘œ์ค€ ๋ฐ์ดํ„ฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋“œ์‹œ ์•Œ๊ณ  ์žˆ๋Š”๊ฒŒ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค!

์•ž์œผ๋กœ ๋„˜ํŒŒ์ด์˜ ํ™œ์šฉ๊ณผ ๋„˜ํŒŒ์ด๋ฅผ ์ด์šฉํ•œ ๋‹ค์–‘ํ•œ ๊ณผํ•™ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•ด์„œ ๋” ๊ณต๋ถ€ํ•˜๊ณ  ํฌ์ŠคํŒ… ํ•ด๋ณด๊ฒ ๋‹ค.

ํ™”์ดํŒ…!

 

์ถœ์ฒ˜: ํ˜ผ์ž๊ณต๋ถ€ํ•˜๋Š” ๋จธ์‹ ๋Ÿฌ๋‹/๋”ฅ๋Ÿฌ๋‹ (ํ•œ๋น›๋ฏธ๋””์–ด, ๋ฐ•ํ•ด์„ )

728x90