如何在python中高效地存储和操作稀疏二进制矩阵?
二元矩阵是一种矩阵,其元素只能是0或1 我在外部数据库中有一个大的(~40GB)稀疏二进制矩阵,可以轻松访问。我想计算这个矩阵的一些第一奇异向量。Numpy数组和scipy稀疏格式效率低下,因为它们不能存储1位值,至少存储8位整数 事实上,我只能存储非零元素的索引,但在这种情况下,我必须自己重新实现svd如何在python中高效地存储和操作稀疏二进制矩阵?,python,numpy,matrix,Python,Numpy,Matrix,二元矩阵是一种矩阵,其元素只能是0或1 我在外部数据库中有一个大的(~40GB)稀疏二进制矩阵,可以轻松访问。我想计算这个矩阵的一些第一奇异向量。Numpy数组和scipy稀疏格式效率低下,因为它们不能存储1位值,至少存储8位整数 事实上,我只能存储非零元素的索引,但在这种情况下,我必须自己重新实现svd 有没有办法避免这种情况?或者我必须为二进制矩阵使用一些特殊的cpp\fortran库
有没有办法避免这种情况?或者我必须为二进制矩阵使用一些特殊的cpp\fortran库这个问题和C++有什么关系?移除标签。请不要重新添加它,除非您将问题的一部分特定于c++Fortran…@xaxxon抱歉,我刚刚添加了SO自己建议的标记。请尝试一下,大多数编译器现在实现8位布尔运算,因为如果给定的操作只影响一个位,那么从一个字节中放置和提取多个位的效率就要低一些,这对您来说似乎是如此。这对于压缩来说是不同的,但是您需要访问。因此,我可能不同意对numpy的广泛描述在这个案例中是无效的。它可能会使用更多内存,但可能比每个字节包含多个位置的实现更快。