如何在python中稀疏矩阵/数组

时间:2019-09-17 07:56:53

标签: python numpy scipy

我想要稀疏化python中的一个简单“矩阵”:

np.array([[5.72756493, 0.        , 0.        ],
          [2.86378246, 4.96021673, 0.        ],
          [5.72756493, 3.30681115, 2.33826859]])

我想将其简化为以下形式:

np.array([[5.72756493, 0.        , 0.        ],
          [2.86378246, 4.96021673, 0.        ],
          [0.,         3.30681115, 2.33826859]])

我确定numpy / scipy中必须有一些简单的函数可以处理此问题。我将仅使用小型3x3矩阵,因此它不一定是最优化的方法

我想要类似的东西: enter image description here

2 个答案:

答案 0 :(得分:1)

快速的网络搜索表明sparsification是活跃的计算机科学研究领域。显然,该想法是通过增加零的比例来使矩阵在计算上更高效。这是通过将一些低幅度项归零,并对其他项进行某种采样来完成的。但是矩阵必须“在计算上是等效的”。

numpy中没有类似的内容。 scipy有一个sparse matrix包。它可以从2d numpy数组中生成一个稀疏矩阵,而不管它有多少个0。但是没有sparsifying函数。以我的经验,scipy.sparse仅在稀疏度在10%或更少(90%的零)数量级时才有效。

有些人可能已经用Python编写了稀疏代码,但这不是这些标准软件包的一部分。

我将投票结束。

答案 1 :(得分:-1)