Сравнение между списком и массивом NumPy - PullRequest
0 голосов
/ 10 сентября 2018

Ну, я новичок в Python, и я недавно начал с numpy вступления. Начиная со сравнения между numpy и list, numpy занимает меньше места в памяти. Но после того, что я попробовал в оболочке IDLE, я запутался. Вот что я сделал

list1=[1,2,3]

sys.getsizeof(list1)

48
a=np.array([1,2,3])

sys.getsizeof(a)

60

Почему массив numpy, который я создал, занимает больше размера, чем объект списка?

1 Ответ

0 голосов
/ 10 сентября 2018

Прежде всего, getsizeof не всегда лучший способ сравнить размер этих двух объектов. Из документов :

Учитывается только потребление памяти, непосредственно связанное с объектом, но не потребление памяти объектами, к которым он относится.

Однако, чтобы ответить на ваш вопрос, вы видите просто дополнительные издержки массива numpy, которые обеспечат искаженные результаты при такой небольшой входной выборке.

Если вы хотите узнать размер только данных , содержащихся в массиве numpy, есть атрибут, который вы можете проверить:

>>> a = np.array([1,2,3])
>>> a.nbytes
12
>>> a = np.array([1,2,3], dtype=np.int8)
>>> a.nbytes
3

Это не включает накладные расходы :

Не включает память, занятую неэлементными атрибутами объекта массива.

...