Se connecter

Numpy

์ƒํƒœ
Python
๋‹ด๋‹น์ž
  • Jaenoo
์ž‘์„ฑ์ž
Jaenoo
1.
Numpy as np ๊ธฐ๋ณธ ๊ฐœ๋… ๋ฐ ๊ธฐ๋Šฅ
โ€ข
ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ๋ถ„์„์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐํ˜•, ๋‹ค์–‘ํ•œ ๊ฐ’์„ ์—ฐ์†์œผ๋กœ ์ €์žฅํ•˜๋Š” ๊ฒƒ.
โ€ข
Numpy ๋ฐฐ์—ด - ๋™์ผํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๊ฐ€์ง€๋Š” ๋‹ค์ฐจ์› ๋ฐฐ์—ด, ๋ฆฌ์ŠคํŠธ๋ณด๋‹ค ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ์ด ๋›ฐ์–ด๋‚˜๊ณ  ๋ฒ ๊ฑฐํ™” ์—ฐ์‚ฐ์„ ์ง€์›ํ•˜์—ฌ ๋ฐ˜๋ณต๋ฌธ ์—†์ด ๋น ๋ฅธ ๊ณ„์‚ฐ์ด ๊ฐ€๋Šฅ.
import numpy as np
import time

# ๋ฐ์ดํ„ฐ ์ƒ์„ฑ
data_list = list(range(1, 100000001))  # 1๋ถ€ํ„ฐ 1,000,000๊นŒ์ง€์˜ ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ
data_array = np.array(data_list)     # ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง„ NumPy ๋ฐฐ์—ด ์ƒ์„ฑ

# ๋น„๊ต - 1
# ๋ฃจํ”„๋ฅผ ์‚ฌ์šฉํ•œ ์—ฐ์‚ฐ
start_time = time.time()

result_list = []
for x in data_list:
    result_list.append(x * 2)

end_time = time.time()
loop_duration = end_time - start_time

print(f"๋ฃจํ”„๋ฅผ ์‚ฌ์šฉํ•œ ์—ฐ์‚ฐ ์‹œ๊ฐ„: {loop_duration:.6f}์ดˆ")

# ๋น„๊ต - 2
# ๋ฒกํ„ฐํ™”๋œ ์—ฐ์‚ฐ (Vectorized Operations)
start_time = time.time()

result_array = data_array * 2

end_time = time.time()
vectorized_duration = end_time - start_time

print(f"Vectorized Operations ์—ฐ์‚ฐ ์‹œ๊ฐ„: {vectorized_duration:.6f}์ดˆ")

# ๊ฒฐ๊ณผ ๋น„๊ต
print(f"Vectorized Operations ์—ฐ์‚ฐ ์‹œ๊ฐ„ ๋น ๋ฅด๊ธฐ : {loop_duration / vectorized_duration:.2f}๋ฐฐ ๋น ๋ฆ„")
์ง‘ ๋ฐ–์œผ๋กœ ๋‚˜์™€ ์นดํŽ˜์—์„œ laptop์œผ๋กœ ์ž‘์—…ํ•˜๋‹ค๋ณด๋‹ˆ ์‹œ๊ฐ„์ด ๋ถ„๋‹จ์œ„๋กœ ๋›ด๋‹ค ใ„ทใ„ท
1.
๋„˜ํŒŒ์ด ๋ฐฐ์—ด ์†์„ฑ(dtype, ndim, T, size, nbtypes, flat)
import numpy as np

# ๋ฐฐ์—ด ์ƒ์„ฑ
array = np.array([[1, 2, 3], [4, 5, 6]])

# ๋ฐ์ดํ„ฐํ˜•(dtype) ํ™•์ธ
print("Data Type (dtype):", array.dtype)

# ๋ชจ์–‘(shape) ํ™•์ธ
print("Shape (shape):", array.shape)

# ์ฐจ์›(ndim) ํ™•์ธ
print("Number of Dimensions (ndim):", array.ndim)

# ๋ฐฐ์—ด์˜ ํ–‰/์—ด ๋ณ€ํ™˜ (transpose)
print("Transposed Array (T):")
print(array.T)

# ๋ฐฐ์—ด์˜ ์›์†Œ ์ˆ˜(size) ํ™•์ธ
print("Total Number of Elements (size):", array.size)

# ๋ฐฐ์—ด์˜ ์ „์ฒด ๋ฐ”์ดํŠธ ์ˆ˜(nbytes) ํ™•์ธ
print("Total Bytes (nbytes):", array.nbytes)
1.
ํ‰ํƒ„ํ™”
import numpy as np
# 2D ๋ฐฐ์—ด ์ƒ์„ฑ
array_2d = np.array([[1, 2, 3], [4, 5, 6]])
# ๋ฐฐ์—ด์„ 1D๋กœ ํ‰ํƒ„ํ™”
flattened_array = array_2d.flatten()
print("Original 2D Array:")
print(array_2d)
print("\nFlattened 1D Array:")
print(flattened_array)
1.
์ธ๋ฑ์‹ฑ
import numpy as np
# 1D ๋ฐฐ์—ด
array_1d = np.array([10, 20, 30, 40, 50])
print("1D ๋ฐฐ์—ด์—์„œ 3๋ฒˆ์งธ ์š”์†Œ:", array_1d[2])
# 2D ๋ฐฐ์—ด
array_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print("2D ๋ฐฐ์—ด์—์„œ (2, 3) ์š”์†Œ:", array_2d[1, 2])
1.
์Šฌ๋ผ์ด์‹ฑ ไธญ
import numpy as np

# 2D ๋ฐฐ์—ด
array_2d = np.array([[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 14]])
print("๊ฐ•์‚ฌ๋‹˜์ด ์‹œํ‚ค์‹  ๊ฒƒ :")
print(array_2d[0:2:1, 0:2:1])

๐Ÿ’ญ ํšŒ๊ณ 

1.
๋ฐฐ์šด ์ 
โ€ข
Pandas ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„ - ํŒ๋‹ค์Šค๋Š” ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ์™€ ๋ถ„์„์— ํŠนํ™”๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, DataFrame๊ณผ Series๋ฅผ ํ†ตํ•ด ํ…Œ์ด๋ธ” ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ๋‹ค๋ฃธ.
2.
์–ด๋ ค์šด ์ /๊ฐœ์„ ํ•  ์ 
โ€ข
๋‹ค์ฐจ์› ๋ฐฐ์—ด์˜ ๋ณต์žกํ•œ ์ธ๋ฑ์‹ฑ ๋ฐ ์Šฌ๋ผ์ด์‹ฑ์€ ์•„์ง ์™„๋ฒฝํ•˜๊ฒŒ ์ต์ˆ™ํ•˜์ง€ ์•Š์•„ ์ถ”๊ฐ€์ ์ธ ์‹ค์Šต์ด ํ•„์š”ํ•จ.
โ€ข
๋ฒกํ„ฐํ™” ์—ฐ์‚ฐ๊ณผ ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…์˜ ์›๋ฆฌ๋ฅผ ๋‹ค์–‘ํ•œ ์‚ฌ๋ก€๋กœ ๋” ์‹ค์Šตํ•ด ๋ณด๋ฉฐ, ์„ฑ๋Šฅ ์ฐจ์ด๋ฅผ ์ง์ ‘ ์ฒดํ—˜ํ•ด ๋ณด๊ณ  ์‹ถ์Œ.(ํ”„๋กœ์ ํŠธ์™€ ์‹ค๋ฌด์— ์ค‘์š”ํ• ๋“ฏ)