python - 具有列表对象的 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 数组甚至是列表本身记忆保持不变。我在这里做错了什么以及获取此类对象的内存大小的正确方法是什么?
解决方案
推荐阅读
- javascript - 如何在网格中的坐标中设置div
- android - Android AccessibilityService getEventTime() 时间格式
- graphql - GraphQL 错误中的“位置”指的是什么?
- android - Android BLE 通知限制和正确的前进方向。多个 BluetoothGatt 对象是前进的好方法吗?
- c# - 插入函数没有采用定义的正确列名?
- python - 如何用python更改文本文件中的一行
- php - php htacess 漂亮的网址在末尾添加 .html
- c - 使用 size_t 变量时循环未结束
- c++ - CPP for 循环遍历字符串的字符从意外索引开始?
- sql - 如何从 JSONB 字段中的嵌套键生成新的行和列输出?