bundles / scipy 1.17.1 / scipy / sparse / _bsr / bsr_matrix
ABCMeta
scipy.sparse._bsr:bsr_matrix
source: /scipy/sparse/_bsr.py :773
Signature
def bsr_matrix ( arg1 , shape = None , dtype = None , copy = False , blocksize = None , * , maxprint = None ) Summary
Block Sparse Row format sparse matrix.
Extended Summary
This can be instantiated in several ways:
bsr_matrix(D, [blocksize=(R,C)])
where D is a 2-D ndarray.
bsr_matrix(S, [blocksize=(R,C)])
with another sparse array or matrix S (equivalent to S.tobsr())
bsr_matrix((M, N), [blocksize=(R,C), dtype])
to construct an empty sparse matrix with shape (M, N) dtype is optional, defaulting to dtype='d'.
bsr_matrix((data, ij), [blocksize=(R,C), shape=(M, N)])
where
dataandijsatisfya[ij[0, k], ij[1, k]] = data[k]bsr_matrix((data, indices, indptr), [shape=(M, N)])
is the standard BSR representation where the block column indices for row i are stored in
indices[indptr[i]:indptr[i+1]]and their corresponding block values are stored indata[ indptr[i]: indptr[i+1] ]. If the shape parameter is not supplied, the matrix dimensions are inferred from the index arrays.
Attributes
dtype: dtypeData type of the matrix
shape: 2-tupleShape of the matrix
ndim: intNumber of dimensions (this is always 2)
nnzsizedataBSR format data array of the matrix
indicesBSR format index array of the matrix
indptrBSR format index pointer array of the matrix
blocksizeBlock size
has_sorted_indices: boolWhether indices are sorted
has_canonical_format: boolT
Notes
Sparse matrices can be used in arithmetic operations: they support addition, subtraction, multiplication, division, and matrix power.
Summary of BSR format
The Block Sparse Row (BSR) format is very similar to the Compressed Sparse Row (CSR) format. BSR is appropriate for sparse matrices with dense sub matrices like the last example below. Such sparse block matrices often arise in vector-valued finite element discretizations. In such cases, BSR is considerably more efficient than CSR and CSC for many sparse arithmetic operations.
Blocksize
The blocksize (R,C) must evenly divide the shape of the sparse matrix (M,N). That is, R and C must satisfy the relationship M % R = 0 and N % C = 0.
If no blocksize is specified, a simple heuristic is applied to determine an appropriate blocksize.
Canonical Format
In canonical format, there are no duplicate blocks and indices are sorted per row.
Limitations
Block Sparse Row format sparse matrices do not support slicing.
Examples
import numpy as np from scipy.sparse import bsr_matrix bsr_matrix((3, 4), dtype=np.int8).toarray()✓
row = np.array([0, 0, 1, 2, 2, 2]) col = np.array([0, 2, 2, 0, 1, 2]) data = np.array([1, 2, 3 ,4, 5, 6]) bsr_matrix((data, (row, col)), shape=(3, 3)).toarray()✓
indptr = np.array([0, 2, 3, 6]) indices = np.array([0, 2, 2, 0, 1, 2]) data = np.array([1, 2, 3, 4, 5, 6]).repeat(4).reshape(6, 2, 2) bsr_matrix((data,indices,indptr), shape=(6, 6)).toarray()✓
Aliases
-
scipy.sparse.bsr_matrix