Python:将一个大矩阵存储到文本文件中以供以后使用



根据您的经验,将二维数组存储到文本文件中的最佳方法是什么?我的矩阵非常大,但是我们用一个小的3 × 3矩阵作为例子。可以按照字面意思像这样存储它(存储到.txt文件中):

3 7 5
2 9 8
8 0 1

,在同一行的元素之间使用空格,并使用换行符将行分开。然后,如果你想在不同的python文件中使用这个保存的矩阵,你只需相应地解析。

然而,是否有更好的(例如,需要几行代码的方式)方式来存储和检索一个大矩阵?

[EDIT]:好的,现在我有一个列表的列表(或数组的数组),但我愿意使用numpy的想法,如果这使事情变得容易得多

如果它是一个简单的数组的数组,一个选择是将其存储为json与json.dump(open('file.dat', 'w'))json.load(open('file.dat'))加载它。这有它的优点和缺点(可读,但不是最有效的)

如果使用numpy是一个选项,你应该使用它。它在保存、表示和序列化大型数组方面效率要高得多。

您可以使用csv模块:

import csv
l = [[3,7,5],
     [2,9,8],
     [8,0,1]]
with open('matrix.txt', 'wb') as csvfile:
    matrixwriter = csv.writer(csvfile, delimiter=' ')
    for row in l:
        matrixwriter.writerow(row)

l2 = []
with open('matrix.txt', 'rb') as csvfile:
    matrixreader = csv.reader(csvfile, delimiter=' ')
    for row in matrixreader:
        l2.append(row)
print(l2)

如果您正在使用numpy,那么io类别下列出的几个例程应该会有所帮助。其中一个例子如下:

>>> """ Assuming your matrix is called x """
>>> from tempfile import TemporaryFile
>>> outfile = TemporaryFile()
>>> np.save(outfile, x)

要重新加载它,需要load函数:

>>> x2 = np.load(outfile)

你的数组应该被复制到x2。

从二维python数组创建numpy数组的示例如下:

x = np.array([2, 3, 1, 0])

如果你需要进一步的帮助,请留下评论。

我个人会使用joblib来存储数组的二进制表示。它还允许使用compress参数来减少大小。

from joblib import dump
dump(arr, filename, compress=3)

相关内容

  • 没有找到相关文章

最新更新