繁体   English   中英

用scipy从席子上读取很长的数组

[英]Read very long array from mat with scipy

我有一个来自Dymola(.mat v4)的结果文件,该文件将所有变量存储在一个巨大的1D数组中(在一个数组中存储大约2GB的数据...)。 由于必须使用Dymola,因此我无法对文件格式做任何事情。 尝试使用scipy(使用Python 2.7.13 64位)读取文件时,出现以下错误:

C:\Users\...\scipy\io\matlab\mio4.py:352: RuntimeWarning: overflow encountered 
in long_scalars
remaining_bytes = hdr.dtype.itemsize * n
C:\...\scipy\io\matlab\mio4.py:172: RuntimeWarning: overflow 
encountered in long_scalars
num_bytes *= d
Traceback (most recent call last):
File 
...
self.mat = scipy.io.loadmat(fileName, chars_as_strings=False)
File "C:\...\scipy\io\matlab\mio.py", line 136, in loadmat
matfile_dict = MR.get_variables(variable_names)
File "C:\...\scipy\io\matlab\mio4.py", line 399, in get_variables
mdict[name] = self.read_var_array(hdr)
File "C:\...\scipy\io\matlab\mio4.py", line 374, in read_var_array
return self._matrix_reader.array_from_header(header, process)
File "C:\...\scipy\io\matlab\mio4.py", line 137, in array_from_header
arr = self.read_full_array(hdr)
File "C:\...\scipy\io\matlab\mio4.py", line 207, in read_full_array
return self.read_sub_array(hdr)
File "C:\...\scipy\io\matlab\mio4.py", line 178, in read_sub_array
"`variable_names` kwarg to `loadmat`" % hdr.name)
ValueError: Not enough bytes to read matrix 'data_2'; is this a badly-formed 
file? Consider listing matrices with `whosmat` and loading named matrices with `variable_names` kwarg to `loadmat`

错误/问题对我来说很清楚。 我的问题:有什么解决方法吗? 我仍然可以读取文件并获取数据吗? 读取时可以拆分数组吗?

我建议您打开对基于HDF5的SDF文件格式的转换。 这种格式可以更好地处理大文件。 请参阅仿真/设置。

或者,您可以使用Dymola中的“变量选择”来减少文件中存储的变量数量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM