Страницы

Поиск по вопросам

понедельник, 27 мая 2019 г.

Сколько места в памяти занимает numpy.array

Подскажите, есть ли какая-нибудь функция, которая позволяет узнать, сколько места в памяти занимает матрица или массив 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.

Комментариев нет:

Отправить комментарий