ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

 

๐Ÿ”น Numpy ๋ฐฐ์—ด ndarray์˜ ์ฃผ์š” ์†์„ฑ

Numpy ๋ฐฐ์—ด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์†์„ฑ๋“ค์„ ์ œ๊ณตํ•œ๋‹ค.

์†์„ฑ  ์„ค๋ช…
ndarray.ndim ๋ฐฐ์—ด์˜ ์ฐจ์› ์ˆ˜ (์ถ•์˜ ๊ฐœ์ˆ˜)
ndarray.shape ๋ฐฐ์—ด์˜ ๊ตฌ์กฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํŠœํ”Œ (๊ฐ ์ฐจ์›์˜ ํฌ๊ธฐ)
ndarray.reshape ๋ฐฐ์—ด์˜ ๋ชจ์–‘์„ ๋ณ€๊ฒฝ (๋‹จ, ์›์†Œ ์ˆ˜๋Š” ์œ ์ง€ํ•ด์•ผ ํ•จ)
ndarray.size ์ „์ฒด ์›์†Œ ๊ฐœ์ˆ˜
ndarray.dtype ๋ฐฐ์—ด์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž… (์˜ˆ: int32, float64, bool ๋“ฑ)
ndarray.itemsize ํ•˜๋‚˜์˜ ์›์†Œ๊ฐ€ ์ฐจ์ง€ํ•˜๋Š” ๋ฐ”์ดํŠธ ํฌ๊ธฐ
ndarray.T ๋ฐฐ์—ด์˜ ์ „์น˜(transpose) ๊ฒฐ๊ณผ
ndarray.tolist() ๋ฐฐ์—ด์„ list๋กœ ๋ฐ˜ํ™˜

 

์˜ˆ์ œ ์ฝ”๋“œ:

import numpy as np

ex_arr = np.array([[[1, 2, 3], [3, 4, 5]],
                   [[10, 20, 30], [30, 40, 50]]])

print("์ฐจ์›:", ex_arr.ndim)         # 3
print("๋ชจ์–‘:", ex_arr.shape)        # (2, 2, 3)
print("ํฌ๊ธฐ:", ex_arr.size)         # 12
print("๋ฐ์ดํ„ฐ ํƒ€์ž…:", ex_arr.dtype) # int32
print("์›์†Œ ํฌ๊ธฐ:", ex_arr.itemsize)# 4 (bytes)
print("์ „์น˜ ํ–‰๋ ฌ:\n", ex_arr.T)

 

๐Ÿ”ธndarray.ndim

 

"Number of array dimensions(๋ฐฐ์—ด ์ฐจ์›์˜ ์ˆ˜)"์˜ ์˜๋ฏธ์ด๋‹ค. ์ฆ‰, ๋ฐฐ์—ด์˜ ์ฐจ์› ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

import numpy as np

scalar = np.array(1)                       # 0์ฐจ์›
vector = np.array([1, 2, 3])               # 1์ฐจ์›
matrix = np.array([[1, 2], [3, 4]])        # 2์ฐจ์›
tensor = np.array([[[1,2,3],[4,5,6]], 
                   [[7,8,9],[10,11,12]]])  # 3์ฐจ์›

print(scalar.ndim)  # 0
print(vector.ndim)  # 1
print(matrix.ndim)  # 2
print(tensor.ndim)  # 3

 

- Scalar : 0์ฐจ์› (๋‹จ์ผ ๊ฐ’)
- Vector : 1์ฐจ์› (Scalar๊ฐ€ ๋ชจ์ธ ๋ฐฐ์—ด)
- matrix(๋งคํŠธ๋ฆญ์Šค) : 2์ฐจ์›, (Vector๊ฐ€ ๋ชจ์ธ ๋ฐฐ์—ด)
- tensor(ํ…์„œ) : 3์ฐจ์›์ด์ƒ, (๋ฐฐ์—ด ์ผ๋ฐ˜์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ‘œํ˜„) 

 

๐Ÿ”ธ ndarray.shape

"Tuple of array dimensions(๋ฐฐ์—ด ์ฐจ์›์˜ ํŠœํ”Œ)"๋กœ, ๋ฐฐ์—ด์˜ ๊ตฌ์กฐ(๋ชจ์–‘)์ด๋‹ค.

๊ฐ ์ฐจ์›์˜ ํฌ๊ธฐ๋ฅผ ํŠœํ”Œ ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

scalar = np.array(1)                       
vector = np.array([1, 2, 3])               
matrix = np.array([[1, 2], [3, 4]])        
tensor = np.array([[[1,2,3],[4,5,6]], 
                   [[7,8,9],[10,11,12]]])  

print(scalar.shape)  # ()
print(vector.shape)  # (3,)
print(matrix.shape)  # (2, 2)
print(tensor.shape)  # (2, 2, 3)

 

- scalar์˜ ๊ฒฝ์šฐ, 0์ฐจ์›์ด๋ฏ€๋กœ, ๋ฐฐ์—ด์˜ ๋ชจ์–‘์ด ์—†์Œ
- vector ๊ฒฝ์šฐ, 3๊ฐœ์งœ๋ฆฌ 1์ฐจ์› ๋ฐฐ์—ด์ด๋ผ๋Š” ์˜๋ฏธ๋กœ (3, )
- matrix์˜ ๊ฒฝ์šฐ, 2ํ–‰ 2์—ด์งœ๋ฆฌ ๋ฐฐ์—ด์ด ์žˆ์œผ๋‹ˆ (2,2)
- tensor์˜ ๊ฒฝ์šฐ, 2๊ฐœ์˜ 2ํ–‰ 3์—ด์งœ๋ฆฌ ๋ฐฐ์—ด์ด ์žˆ์œผ๋ฏ€๋กœ (2,2,3)

 

 

๐Ÿ”ธ ndarray.reshape()

shape ์†์„ฑ์„ ํ™œ์šฉํ•˜๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ reshape()์ด๋ฉฐ, ๋ฐฐ์—ด์˜ ํ˜•ํƒœ๋ฅผ ๋ฐ”๊ฟ€ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋•Œ, ์›์†Œ์˜ ๊ฐœ์ˆ˜๋Š” ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค.

a = np.array([[1,2,3], [4,5,6], [7,8,9]])
print(a.shape)  # (3, 3)

b = np.linspace(11, 19, 9)
print(b)    # [11. 12. 13. 14. 15. 16. 17. 18. 19.]

b = b.reshape(a.shape)
print(b)    #   [[11. 12. 13.]
            #  [14. 15. 16.]
            #  [17. 18. 19.]]
            
print("result: ", a + b)

 

์š”์†Œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ ์ ˆํ•  ๊ฒฝ์šฐ, ํ–‰๋ ฌ์˜ ๋ชจ์–‘์„ ๋ฐ”๊ฟ” ์—ฐ์‚ฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š” ์‹์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿ”ธndarray.size

์ „์ฒด ์›์†Œ ๊ฐœ์ˆ˜๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, ๋ฐฐ์—ด ์ฐจ์›๋“ค์˜ ๊ณฑ๊ณผ ๊ฐ™๋‹ค.

scalar = np.array(1)                       
vector = np.array([1, 2, 3])               
matrix = np.array([[1, 2], [3, 4]])        
tensor = np.array([[[1,2,3],[4,5,6]], 
                   [[7,8,9],[10,11,12]]]) 

print(scalar.size)	# 1
print(vector.size)	# 3
print(matrix.size)	# 4
print(tensor.size)	# 12

 

scalar_np : ํ•˜๋‚˜์˜ ์ •์ˆ˜ = 1
vector_np : 3๊ฐœ์˜ ์š”์†Œ * 1์ฐจ์› = 3
matrix_np : 2๊ฐœ์˜ ์š”์†Œ ์•ˆ์— * 2๊ฐœ์˜ ์š”์†Œ = 4
tensor_np : 2๊ฐœ์˜ ์š”์†Œ ์•ˆ์—  * 2๊ฐœ์˜ ์š”์†Œ, ๊ทธ๋ฆฌ๊ณ  ๊ทธ์•ˆ์— * 3๊ฐœ์˜ ์š”์†Œ = 12

 

๐Ÿ”ธ ndarray.dtype, itemsize

Numpy๋Š” ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ํƒ€์ž… ์„ค์ • ๋ฐ ์ตœ์ ํ™” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ๋ฐฐ์—ด์˜ ๊ฐ ์›์†Œ๊ฐ€ ์–ด๋–ค ์ž๋ฃŒํ˜•์„ ๊ฐ€์ง€๋Š”์ง€๋ฅผ dtype์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด์— ๋”ฐ๋ผ ๊ฐ ์›์†Œ๊ฐ€ ์ฐจ์ง€ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ(itemsize)๊ฐ€ ๊ฒฐ์ •๋œ๋‹ค.

 

int8_np = np.array([1,2,3], dtype=np.int8)
int16_np = np.array([1,2,3], dtype=np.int16)

uint8_np = np.array([1,2,3], dtype=np.uint8)
uint16_np = np.array([1,2,3], dtype=np.uint16)

float32_np = np.array([1,2,3], dtype=np.float32)
float64_np = np.array([1,2,3], dtype=np.float64)

print("Integer: {}/{}/{}/{}".format(int8_np.dtype, int16_np.dtype)) # int8 int16
print("Unsigned Integer: {}/{}/{}/{}".format(uint8_np.dtype, uint16_np.dtype)) # uint8 uint16
print("Floating Point: {}/{}".format(float32_np.dtype, float64_np.dtype)) # float32 float64

 

๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ํ™•์ธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

ones = np.ones(shape=(10, 5, 3, 2))	 #๊ธฐ๋ณธ dtype์€ float64

print("size:", ones.size)	#์ „์ฒด ์›์†Œ ์ˆ˜: 10*5*3*2 = 300
print("dtype/itemsize: {} / {}\n".format(ones.dtype, ones.itemsize))	# float64 / 8

total_bytes = ones.size * ones.itemsize
print("๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰:")
print(f" - {total_bytes} B") # 2400

 

๐Ÿ“Œ ndarray.nbytes๋Š” ์œ„ ๊ณ„์‚ฐ์„ ํ•œ ์ค„๋กœ ์š”์•ฝํ•œ ์†์„ฑ

print(ones.nbytes)  # 2400 (bytes)

 

๐Ÿ”ธndarray.T

๋ฐฐ์—ด์˜ ํ–‰๊ณผ ์—ด์„ ๋’ค๋ฐ”๊พผ ํ˜•ํƒœ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
 
arr = np.array([[1, 2],
                [3, 4]])
print(arr.T)
#[[1 3]
# [2 4]]

 

๐Ÿ”ธ ndarray.tolist() 

Numpy ๋ฐฐ์—ด์„ Python์˜ ๋ฆฌ์ŠคํŠธ ์ž๋ฃŒํ˜•์œผ๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.
print(arr.tolist())  # [[1, 2], [3, 4]]

 

 

๋งˆ๋ฌด๋ฆฌ

 

๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2026/02   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
๊ธ€ ๋ณด๊ด€ํ•จ