我正在使用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>
答案 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
存储值的数量,包括显式零。