我正试图从以下文件中提取数据:
https://slac.stanford.edu/~behroozi/BPlanck_Trees/tree_0_0.dat.gz
它是.dat.gz文件。我通过我的终端下载了它,并对其进行了解压缩,使其成为.dat文件。然而,当我运行时:
f = open('tree_0_0_0.dat', 'r')
data = np.genfromtxt(f)
我得到:
array([],dtype=float64)
为什么它是一个空数组。如何提取此处的数据?我可能对它进行了错误的解压缩吗?
非常感谢您的帮助!
您应该简单地查看.dat文件的前100行,看看它是否是您所期望的。你的.dat文件大小是多少?
该文件的第47行只有一个数字,这导致numpy在每行实际有57个元素时,期望每行有一个元素。我在第47行加了一个"#"在数字前面。然后np.genfromtxt
处理了一个截断的例子。
我说";"截断";,因为整个文件非常庞大。我刚抽出前1000行来尝试导入。您确定要将2300万行全部读取到内存中吗?在一个numpy数组中,它的大小约为10 GB。你的机器有多少内存?
您可能需要考虑如何串行处理这些数据,而不是一次读取整个数据。