如何检查 SciPy CSR 矩阵是否为空(或仅包含零)?
How to check if a SciPy CSR matrix is empty (i.e. contains only zeroes)?
检查 SciPy CSR matrix 是否为空(即仅包含零)的规范方法是什么?
我用nonzero()
:
def is_csr_matrix_only_zeroes(my_csr_matrix):
return(len(my_csr_matrix.nonzero()[0]) == 0)
from scipy.sparse import csr_matrix
print(is_csr_matrix_only_zeroes(csr_matrix([[1,2,0],[0,0,3],[4,0,5]])))
print(is_csr_matrix_only_zeroes(csr_matrix([[0,0,0],[0,0,0],[0,0,0]])))
print(is_csr_matrix_only_zeroes(csr_matrix((2,3))))
print(is_csr_matrix_only_zeroes(csr_matrix([[0,0,0],[0,1,0],[0,0,0]])))
产出
False
True
True
False
但我想知道是否有更直接或更有效的方法。
(相关但不同:Check if scipy sparse matrix entry exists)
my_csr_matrix.nnz == 0
nnz
attribute 记录非零条目的数量...除非您的 CSR 矩阵采用奇怪的非规范化形式,例如,如果它有重复的条目或明确存储的零。
如果您必须处理重复的条目或明确的零,您可以使用更昂贵的 csr_matrix.count_nonzero
method:
my_csr_matrix.count_nonzero() == 0
检查 SciPy CSR matrix 是否为空(即仅包含零)的规范方法是什么?
我用nonzero()
:
def is_csr_matrix_only_zeroes(my_csr_matrix):
return(len(my_csr_matrix.nonzero()[0]) == 0)
from scipy.sparse import csr_matrix
print(is_csr_matrix_only_zeroes(csr_matrix([[1,2,0],[0,0,3],[4,0,5]])))
print(is_csr_matrix_only_zeroes(csr_matrix([[0,0,0],[0,0,0],[0,0,0]])))
print(is_csr_matrix_only_zeroes(csr_matrix((2,3))))
print(is_csr_matrix_only_zeroes(csr_matrix([[0,0,0],[0,1,0],[0,0,0]])))
产出
False
True
True
False
但我想知道是否有更直接或更有效的方法。
(相关但不同:Check if scipy sparse matrix entry exists)
my_csr_matrix.nnz == 0
nnz
attribute 记录非零条目的数量...除非您的 CSR 矩阵采用奇怪的非规范化形式,例如,如果它有重复的条目或明确存储的零。
如果您必须处理重复的条目或明确的零,您可以使用更昂贵的 csr_matrix.count_nonzero
method:
my_csr_matrix.count_nonzero() == 0