dgl.sparse.SparseMatrix.smean

SparseMatrix.smean(dim: int | None = None)

Computes the mean of non-zero values of the input sparse matrix along the given dimension dim.

The reduction does not count zero values. If the row or column to be reduced does not have any non-zero value, the result will be 0.

Parameters:
  • input (SparseMatrix) – The input sparse matrix

  • dim (int, optional) –

    The dimension to reduce, must be either 0 (by rows) or 1 (by columns) or None (on both rows and columns simultaneously)

    If dim is None, it reduces both the rows and the columns in the sparse matrix, producing a tensor of shape input.val.shape[1:]. Otherwise, it reduces on the row (dim=0) or column (dim=1) dimension, producing a tensor of shape (input.shape[1],) + input.val.shape[1:] or (input.shape[0],) + input.val.shape[1:].

Returns:

Reduced tensor

Return type:

torch.Tensor

Examples

Case1: scalar-valued sparse matrix

>>> indices = torch.tensor([[0, 1, 1], [0, 0, 2]])
>>> val = torch.tensor([1., 1., 2.])
>>> A = dglsp.spmatrix(indices, val, shape=(4, 3))
>>> dglsp.smean(A)
tensor(1.3333)
>>> dglsp.smean(A, 0)
tensor([1., 0., 2.])
>>> dglsp.smean(A, 1)
tensor([1.0000, 1.5000, 0.0000, 0.0000])

Case2: vector-valued sparse matrix

>>> indices = torch.tensor([[0, 1, 1], [0, 0, 2]])
>>> val = torch.tensor([[1., 2.], [2., 1.], [2., 2.]])
>>> A = dglsp.spmatrix(indices, val, shape=(4, 3))
>>> dglsp.smean(A)
tensor([1.6667, 1.6667])
>>> dglsp.smean(A, 0)
tensor([[1.5000, 1.5000],
        [0.0000, 0.0000],
        [2.0000, 2.0000]])
>>> dglsp.smean(A, 1)
tensor([[1.0000, 2.0000],
        [2.0000, 1.5000],
        [0.0000, 0.0000],
        [0.0000, 0.0000]])