Python 3.x Python3 numpy数组大小与列表比较
我一直认为numpy数组比list更紧凑,占用的内存更少,但是,对于三维float64 np数组Python 3.x Python3 numpy数组大小与列表比较,python-3.x,numpy,Python 3.x,Numpy,我一直认为numpy数组比list更紧凑,占用的内存更少,但是,对于三维float64 np数组 print (sys.getsizeof(result2)/1024./1024./1024.) print (sys.getsizeof(result2.astype('float16'))/1024./1024./1024.) print (sys.getsizeof(list(result2))/1024./1024./1024.) print (sys.getsizeof(result2.t
print (sys.getsizeof(result2)/1024./1024./1024.)
print (sys.getsizeof(result2.astype('float16'))/1024./1024./1024.)
print (sys.getsizeof(list(result2))/1024./1024./1024.)
print (sys.getsizeof(result2.tolist())/1024./1024./1024.)
输出是,
0.6521792411804199
0.16304489970207214
0.00033977627754211426
0.0003019943833351135
列表占用的内存要小得多。对列表使用sys.getsizeof
是否有效?如果是,我能做些什么来提高np数组内存使用率吗
######################
使用pympler@J_H(pympler似乎不能处理列表中的数组,比如list(一个3-D数组)
谢谢大家! 显示每个
列表
元素消耗8个字节
但每个元素只是一个指向24字节浮点对象的指针
此外,当您从三维阵列开始时,
您将看到列表中的列表。
您可以自己递归数据结构
准确地将分配的字节相加。
或者您可以使用。
getsizeof
是非递归的,即它不会考虑容器的内容。请参阅ndarray`is easy-arr.nbytes
的内存使用,或每个元素的形状和字节的乘积。列表的内存使用很难估计。
print (result2.nbytes/1024./1024./1024.)
print (asizeof.asizeof(result2)/1024./1024./1024.)
print (result2.astype('float16').nbytes/1024./1024./1024.)
print (asizeof.asizeof(list(result2))/1024./1024./1024.)
print (asizeof.asizeof(result2.tolist())/1024./1024./1024.)
0.6521791219711304
0.6521792411804199
0.1630447804927826
0.004566863179206848
4.078836984932423