Подскажите, есть ли какая-нибудь функция, которая позволяет узнать, сколько места в памяти занимает матрица или массив numpy?
Ответ
Можно воспользоваться методом nbytes
In [5]: a = np.random.rand(10**6)
In [6]: a.nbytes
Out[6]: 8000000
In [7]: a.dtype
Out[7]: dtype('float64')
это работает и для многомерных матриц:
In [11]: a = np.random.randint(0, 10, (10**3, 10**3, 10**3), dtype=np.int8)
In [12]: a.shape
Out[12]: (1000, 1000, 1000)
In [13]: a.nbytes
Out[13]: 1000000000
In [14]: a.dtype
Out[14]: dtype('int8')
также можно воспользоваться стандартной функцией: sys.getsizeof()
In [33]: a = np.random.rand(10**6)
In [34]: sys.getsizeof(a)
Out[34]: 8000096
которая вызовет __sizeof__ для вызываемого объекта:
In [35]: a.__sizeof__()
Out[35]: 8000096
Из документации:
getsizeof() calls the object’s __ sizeof __ method and adds an
additional garbage collector overhead if the object is managed by the
garbage collector.
Комментариев нет:
Отправить комментарий