{ } Raw JSON

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 data and ij satisfy a[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 in data[ indptr[i]: indptr[i+1] ]. If the shape parameter is not supplied, the matrix dimensions are inferred from the index arrays.

Attributes

dtype : dtype

Data type of the matrix

shape : 2-tuple

Shape of the matrix

ndim : int

Number of dimensions (this is always 2)

nnz
size
data

BSR format data array of the matrix

indices

BSR format index array of the matrix

indptr

BSR format index pointer array of the matrix

blocksize

Block size

has_sorted_indices : bool

Whether indices are sorted

has_canonical_format : bool
T

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