从二进制文件存储/加载numpy数组

时间:2010-06-16 11:03:21

标签: python file binaryfiles

我想从二进制文件存储和加载numpy数组。为此,我创建了两个小函数。每个二进制文件应包含给定矩阵的维度。

def saveArrayToFile(data, fileName):
    with open(fileName, 'w') as file:
        a = array.array('f')
        nSamples, ndim = data.shape
        a.extend([nSamples, ndim]) # write number of elements and dimensions
        a.fromstring(data.tostring())
        a.tofile(file)


def readArrayFromFile(fileName):
    _featDesc = np.fromfile(fileName, 'f')
    _ndesc = int(_featDesc[0])
    _ndim  = int(_featDesc[1])
    _featDesc = _featDesc[2:]
    _featDesc = _featDesc.reshape([_ndesc, _ndim])

    return _featDesc, _ndesc, _ndim

关于如何使用这些功能的一个例子是:

myarr=np.array([[7, 4],[3, 9],[1, 3]])
saveArrayToFile(myarr,'myfile.txt')
_featDesc, _ndesc, _ndim = readArrayFromFile('myfile.txt')

但是,会显示“ValueError:新数组的总大小必须保持不变”的错误消息。我的阵列大小可以是MxN和MxM。任何建议都受到欢迎。 我认为问题可能出在saveArrayToFile函数中。

祝福,

哈维尔

1 个答案:

答案 0 :(得分:2)

使用numpy.save(和numpy.load)将numpy数组转储(检索)到二进制文件中。