首页 > 解决方案 > 具有列表对象的 Numpy Array 的内存使用问题

问题描述

我正在开发一个流应用程序,我需要以最少的内存占用发送数据。我的数据(一个列表对象)被包装在一个 numpy 数组中,但即使从列表中减少数据,我也得到相同的内存大小。例如

>>> import numpy as np
>>> import sys
>>> from pympler.asizeof import asizeof
>>> x = np.full((299,299,3),120)
>>> x.nbytes
2145624
>>> a1 = [x, '1','2']
>>> sys.getsizeof(a1)
88
>>> y = np.full((25000,3),120) # creating a smaller array with less data as compare to x
>>> y.nbytes
600000
>>> a2 = [y, '1','2']
>>> sys.getsizeof(a2)
88
>>> a2 =[[y], '1','2']
>>> sys.getsizeof(a2)
88
>>> a3 = np.array(a2, dtype = object)
>>> a3.nbytes
24
>>> a2 =[[y,y,y,y], '1','2']
>>> sys.getsizeof(a2)
88
>>> a4 = np.array(a2,dtype = object)
>>> a4.nbytes
24

我在列表中增加或减少了多少数据,例如 a2 = [[y,y,y,y,y...100 times],'1','2'] 并传递给 numpy 数组甚至是列表本身记忆保持不变。我在这里做错了什么以及获取此类对象的内存大小的正确方法是什么?

标签: pythonlistnumpymemory

解决方案


推荐阅读