获取稀疏矩阵的存储元素数-Python

时间:2018-08-24 10:03:33

标签: python scipy sparse-matrix

我正在使用Python处理大型稀疏矩阵。我矩阵的表示形式给了我存储元素的数量,例如

$scope.addTodo = function () {
    if ($scope.formTodoText.replace(/\s/g,'').length > 0) {
        $scope.todos.push({text:$scope.formTodoText, done:false});
        $scope.formTodoText = '';
    }
};

我的问题是:如何让Python将数字<100000x100000 sparse matrix of type '<type 'numpy.float64'>' with 1244024860 stored elements in Compressed Sparse Row format> 返回给我?我想使用该数字作为非零元素的数量的近似值(即使有些存储的元素的数量可以为零。

对于较小的矩阵,我使用的是1244024860方法,但是该方法实际上进行了计算(我想它会检查存储的元素实际上是否为零),因此对于我的大型矩阵来说效率非常低。 / p>

2 个答案:

答案 0 :(得分:2)

使用nnz属性。例如,

In [80]: a = csr_matrix([[0, 1, 2, 0], [0, 0, 0, 0], [0, 0, 0, 3]])

In [81]: a
Out[81]: 
<3x4 sparse matrix of type '<class 'numpy.int64'>'
    with 3 stored elements in Compressed Sparse Row format>

In [82]: a.nnz
Out[82]: 3

csr_matrix documentation中描述了csr_matrix类的属性(向下滚动以找到它们)。

答案 1 :(得分:1)

您一直在寻找scipy.sparse.csr_matrix.getnnz

https://docs.scipy.org/doc/scipy-0.19.0/reference/generated/scipy.sparse.csr_matrix.getnnz.html

  

存储值的数量,包括显式零。