首页 > 解决方案 > 如何在 python 中读取 .float 文件?

问题描述

我正在处理大脑 MRI 数据,它是 .float 数据。

你知道如何在 python 中使用它吗?

with open('[43x25520].float') as f:
     read_data = f.read()

我得到:

Out[16]:  Traceback (most recent call last):

  File "<ipython-input-18-64e280c91de5>", line 2, in <module>
    read_data = f.read()

  File "/home/anja/anaconda3/lib/python3.7/codecs.py", line 322, in
decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position
2: invalid start byte

但我想使用文件中的浮点数。

标签: pythonpython-3.x

解决方案


假设这些文件只是浮点流,并且它们足够小以适合内存,那么以下应该可以工作。

from struct import iter_unpack

with open('/path/to/file', 'rb') as dat:
    # This will give you your data as a 1D array
    data = list(iter_unpack('f', dat.read()))

这假定了本地字节序。您可以更改为'f''<f'或者'>f'如果您需要指定不同的内容。见这里

要将其转换为正确尺寸的矩阵,我会查看 numpy.

import numpy as np

matrix = np.array(data).reshape(43, 25520) # data from above
print(matrix[2,4523])

推荐阅读