Numpy. section3 : ndarray의 메타데이터. Lec10. ndarray의 dtype, itemsize, nbytes

timekeeep·2023년 2월 23일

Numpy

목록 보기
9/28

[1] Data types in NumPy

  • int8 -> 8bit -> 256개의 수 표현가능

  • tenserflow는 기본적으로 float32 사용

  • np.array를 만들때 명시적으로 dtype을 정할 수 있음

  • int8_np = np.array([1.5, 2.5, 3.5], dtype = np.int8) 같은 경우는 소수점이 짤린다. -> astype에서도 마찬가지이다.

  • ones / zeros 에서도 dtype설정이 가능하다.

  • itemsize는 원소 하나에 얼마만큼의 용량을 차지하는지를 나타내준다.

import numpy as np

M = np.arange(100)
N = np.full(fill_value = 3.14, shape = (2,3))

print(M.dtype) #int64
print(N.dtype) #float64

int_np = np.array([1,2,3])
float_np = np.array([1.,2.,3.])

print(int_np.dtype) #int64
print(float_np.dtype) #float64

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

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

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

int8_np = np.array([1.5, 2.5, 3.5], dtype = np.int8)
uint8_np = np.array([1.5, 2.5, 3.5], dtype = np.uint8) 

M = np.ones(shape = (2,3), dtype = np.float32)
N = np.zeros_like(M, dtype = np.float64)

# ndarray.itemsize

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

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

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

print("int8_np: {}/{}B".format(int8_np.dtype, int8_np.itemsize))
print("int16_np: {}/{}B".format(int16_np.dtype, int16_np.itemsize))
print("int32_np: {}/{}B".format(int32_np.dtype, int32_np.itemsize))
print("int64_np: {}/{}B".format(int64_np.dtype, int64_np.itemsize))

print("uint8_np: {}/{}B".format(uint8_np.dtype, uint8_np.itemsize))
print("uint16_np: {}/{}B".format(uint16_np.dtype, uint16_np.itemsize))
print("uint32_np: {}/{}B".format(uint32_np.dtype, uint32_np.itemsize))
print("uint64_np: {}/{}B".format(uint64_np.dtype, uint64_np.itemsize))

print("float32_np: {}/{}B".format(float32_np.dtype, float32_np.itemsize))
print("float64_np: {}/{}B".format(float64_np.dtype, float64_np.itemsize))

normal = np.random.normal(size = (50,50,32,5))

print("size: ", normal.size)
print("dtype/itemsize: {}/{}\n".format(normal.dtype, normal.itemsize))

m_cap = normal.size * normal.itemsize

print("Memory capacity in B: {}B".format(m_cap))
print("Memory capacity in KB: {}KB".format(m_cap/1024)) 
print("Memory capacity in MB: {}MB".format(m_cap/1024**2))

#ndarray.nbytes

normal = np.random.normal(size = (50, 50, 32, 5))

m_cap = normal.size * normal.itemsize
profile
Those who are wise will shine like the brightness of the heavens, and those who lead many to righteousness, like the stars for ever and ever

0개의 댓글