所以它确实是一个10000x10000的矩阵,但它是稀疏矩阵,并以特殊的对角线格式存储。让我们再做一次相同的乘法:
AA_sparse = A_sparse.dot(A_sparse)
在我的电脑上,这花了0.003秒,比密集矩阵快了2000多倍。为了确定结果是否相同?
np.max(np.abs(AA_dense - AA_sparse))Out: 0.0
所以,确实是相同的。
如我所说,scipy.sparse中有不同种类的稀疏矩阵表示形式。每种形式都有其优缺点。例如,使用lil稀疏矩阵类型,矩阵切片操作很快,并且改变结构(如添加元素)也很快。但算术操作(如加法和乘法)则很慢。另一方面,csr_matrix类型在算术操作上很快,但在切片和改变值时则很慢。因此,这实际上取决于你想做什么。通常,你需要以某种方式构建矩阵,然后想用它来进行计算。第一个任务涉及改变矩阵结构,第二个任务则涉及算术运算。那么你该怎么办?使用两种不同的稀疏矩阵类型。首先,使用一种在构建方面优化的类型,然后将其转换为一种在算术方面优化的类型!你只需知道哪种类型适合哪种情况。幸运的是,SciPy的文档非常出色。每种稀疏矩阵类型都有自己的文档页面,其中描述了优缺点和预期用途。
数学联邦政治世界观提示您:看后求收藏(同人小说网http://tongren.me),接着再看更方便。