gpt4 book ai didi

numpy 数组的 Python 内存使用情况

转载 作者:IT老高 更新时间:2023-10-28 12:31:34 26 4
gpt4 key购买 nike

我正在使用 python 来分析一些大文件并且遇到了内存问题,所以我一直在使用 sys.getsizeof() 来尝试跟踪使用情况,但是 numpy 数组的行为很奇怪.这是一个涉及我必须打开的反照率 map 的示例:

>>> import numpy as np
>>> import struct
>>> from sys import getsizeof
>>> f = open('Albedo_map.assoc', 'rb')
>>> getsizeof(f)
144
>>> albedo = struct.unpack('%df' % (7200*3600), f.read(7200*3600*4))
>>> getsizeof(albedo)
207360056
>>> albedo = np.array(albedo).reshape(3600,7200)
>>> getsizeof(albedo)
80

数据仍然存在,但对象的大小(3600x7200 像素 map )已从 ~200 Mb 变为 80 字节。我希望我的内存问题已经结束,只是将所有内容都转换为 numpy 数组,但我觉得这种行为,如果是真的,会在某种程度上违反信息论或热力学的某些定律,所以我倾向于相信 getsizeof() 不适用于 numpy 数组。有什么想法吗?

最佳答案

您可以使用 array.nbytes对于 numpy 数组,例如:

>>> import numpy as np
>>> from sys import getsizeof
>>> a = [0] * 1024
>>> b = np.array(a)
>>> getsizeof(a)
8264
>>> b.nbytes
8192

关于numpy 数组的 Python 内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11784329/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com