我正在寻找一种简单的方法来了解数组和字典对象的字节大小,比如
[ [1,2,3], [4,5,6] ] or { 1:{2:2} }
Run Code Online (Sandbox Code Playgroud)
很多主题都说使用pylab,例如:
from pylab import *
A = array( [ [1,2,3], [4,5,6] ] )
A.nbytes
24
Run Code Online (Sandbox Code Playgroud)
但是,字典怎么样?我看到很多答案建议使用pysize或heapy.Torsten Marek在此链接中给出了一个简单的答案:建议使用哪种Python内存分析器?,但我对输出没有明确的解释,因为字节数不匹配.
Pysize似乎更复杂,我还没有明确如何使用它.
鉴于我想要执行的大小计算的简单性(没有类或复杂的结构),任何关于如何简单估计这种对象的内存使用量的想法?
亲切的问候.
给出了1.5 Gb的pandas数据帧列表.
我想知道哪个是更好的方法来处理加载这些数据:pickle(通过cPickle),hdf5,或python中的其他东西?
首先,"倾销"数据可以花很长时间,我只做一次.
我也不关心磁盘上的文件大小.
问: 我关心的是尽快将数据加载到内存中的速度.
我在内存中有一个大型数据集(数百万行),采用numpy数组和字典的形式.
一旦构建了这个数据,我想将它们存储到文件中; 所以,稍后我可以快速将这些文件加载到内存中,而无需再次从头开始重建这些数据.
np.save和np.load函数可以为numpy数组顺利完成工作.
但是我遇到了dict对象的问题.
见下面的样本.d2是从文件加载的字典.请参阅#out [28]它已作为numpy数组加载到d2中,而不是作为dict.所以进一步的dict操作如get不起作用.
有没有办法从文件加载数据作为dict(而不是numpy数组)?
In [25]: d1={'key1':[5,10], 'key2':[50,100]}
In [26]: np.save("d1.npy", d1)
In [27]: d2=np.load("d1.npy")
In [28]: d2
Out[28]: array({'key2': [50, 100], 'key1': [5, 10]}, dtype=object)
In [30]: d1.get('key1') #original dict before saving into file
Out[30]: [5, 10]
In [31]: d2.get('key2') #dictionary loaded from the file
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-31-23e02e45bf22> in <module>()
----> 1 d2.get('key2')
AttributeError: 'numpy.ndarray' object has no attribute 'get'
Run Code Online (Sandbox Code Playgroud) 我有一本相对较大的字典.我怎么知道尺寸?好吧,当我使用cPickle文件的大小保存它将增长约.400MB.cPickle 应该比pickle加载和保存这个文件快得多,只需要花费很多时间.我在Linux机器上有一台带有4GB RAM的双核笔记本电脑2.6 Ghz.有没有人有任何建议在python中更快地保存和加载字典?谢谢