【发布时间】:2015-05-04 00:11:57
【问题描述】:
我在 scipy 中遇到了稀疏矩阵的问题。我想将它们用作普通矩阵,但不使用 todense() 函数。我是这个领域的新手,我不知道当我想乘以稀疏矩阵时如何得到相同的结果,但没有稀疏矩阵...我认为稀疏矩阵仅用于更快的计算,所以它应该是可能的在没有稀疏矩阵的情况下做到这一点:
sparse_matrix * 5 == sparase_matrix.todense() * 5 == no_sparse_matrix* 5
data = np.ones(5178)
indices = [34,12,545,23...,25,18,29] Shape:5178L
indptr = np.arange(5178 + 1)
sparse_matrix = sp.csr_matrix((data, indices, indptr), shape = (5178, 3800))
这是正确的吗?
sparse_matrix * 5 == sparase_matrix.todense() * 5 == data * 5 ?
我的目标是得到与不使用稀疏矩阵相乘稀疏矩阵时相同的结果?这可能吗?我该怎么做?
编辑:关于我的意图: 我的问题是我想将 python 代码传输到 java 中,而我的用于线性代数的 java 库不提供稀疏矩阵操作。
所以我必须在没有稀疏矩阵的 java 中做同样的事情。我不确定是否可以只使用数据数组而不是稀疏矩阵。
在原始代码中,一个稀疏矩阵与另一个矩阵相乘。 要将其传输到 java,我只需将稀疏矩阵的数据数组与另一个矩阵相乘。这是正确的吗?
【问题讨论】:
-
为什么不想使用
todense? -
我的问题是我想将 python 代码传输到 java 中,而我的线性代数 java 库不提供稀疏矩阵操作。所以我必须在没有稀疏矩阵的java中做同样的事情。我不确定是否可以只使用数据数组而不是稀疏矩阵。在原始代码中,稀疏矩阵与另一个矩阵相乘。要将其传输到 java,我只需将稀疏矩阵的数据数组与另一个矩阵相乘。这是正确的吗?
标签: python matrix scipy sparse-matrix