1

我有一个 2D 布尔值列表,它表示 Python 中有向图的邻接矩阵。我正在尝试将此矩阵写入文件,但矩阵本身非常大,因此我试图在将其写入文件之前想出一些对其进行编码的方法。

我想我可以将每一列视为二进制数 - 所以我可以将其转换为十进制数并将其写入文件。但是,首先,我会写下节点的数量以确保每个编码都是唯一的。

因此,例如,如果矩阵是[[False, True], [True, True]],我的文件将如下所示:

2(节点数)
1(十进制为 01)
3(十进制为 11)

当然,没有括号内的文字。

我的问题是:是否有另一种更节省空间(如生成的文件会更小)的方式来编码这个矩阵?

4

2 回答 2

1

您需要在数据中有一些模式才能更好地压缩它。更多模式 = 更多压缩。您根据模式组成数据。

如果你有一个随机的数据集矩阵,你可以使用rank方法来压缩它。好好看看这个答案

关于这个主题的一篇好论文

于 2012-09-01T23:32:39.563 回答
1

对于图的邻接矩阵,它可能非常稀疏,因此只需将矩阵转换为Scipy 稀疏矩阵腌制它(无需设计自己的文件格式)。

于 2012-09-01T23:56:37.823 回答