scipy.sparse.bsr_matrix¶
- class scipy.sparse.bsr_matrix(arg1, shape=None, dtype=None, copy=False, blocksize=None)[源代码]¶
挡路稀疏行阵
- 这可以通过几种方式实例化:
- BSR_矩阵(D, [blocksize=(R,C)] )
其中D是稠密矩阵或二维ndarray。
- BSR_矩阵(S, [blocksize=(R,C)] )
具有另一个稀疏矩阵S(等价于S.tobsr())
- BSR_矩阵((M,N), [blocksize=(R,C), dtype] )
要构造形状为(M,N)的空矩阵,dtype是可选的,默认为dtype=‘d’。
- BSR_MATRIX((data,ij), [blocksize=(R,C), shape=(M, N)] )
哪里
data
和ij
满足a[ij[0, k], ij[1, k]] = data[k]
- BSR_矩阵((data,index,indptr), [shape=(M, N)] )
是存储第i行的挡路列索引的标准bsr表示形式。
indices[indptr[i]:indptr[i+1]]
并且它们对应的挡路值存储在data[ indptr[i]: indptr[i+1] ]
。如果未提供Shape参数,则从索引数组推断矩阵尺寸。
注意事项
稀疏矩阵可用于算术运算:它们支持加、减、乘、除和矩阵幂。
BSR格式概述
挡路压缩行(BSR)格式与压缩稀疏行(CSR)格式非常相似。BSR适用于具有密集子矩阵的稀疏矩阵,如下面最后一个示例。挡路矩阵经常出现在向量值有限元离散中。在这种情况下,对于许多稀疏算术运算,BSR比CSR和CSC效率高得多。
Blocksize
块大小(R,C)必须均匀划分矩阵(M,N)的形状。也就是说,R和C必须满足关系
M % R = 0
和N % C = 0
。如果未指定块大小,则应用简单的启发式方法来确定适当的块大小。
示例
>>> from scipy.sparse import bsr_matrix >>> bsr_matrix((3, 4), dtype=np.int8).toarray() array([[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]], dtype=int8)
>>> 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() array([[1, 0, 2], [0, 0, 3], [4, 5, 6]])
>>> 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() array([[1, 1, 0, 0, 2, 2], [1, 1, 0, 0, 2, 2], [0, 0, 0, 0, 3, 3], [0, 0, 0, 0, 3, 3], [4, 4, 5, 5, 6, 6], [4, 4, 5, 5, 6, 6]])
- 属性
- dtype数据类型
矩阵的数据类型
shape
2元组获得矩阵的形状。
- ndim集成
维数(该值始终为2)
nnz
存储值的数量,包括显式零。
- data
矩阵的数据数组
- indices
BSR格式索引数组
- indptr
BSR格式索引指针数组
- blocksize
矩阵的挡路大小
has_sorted_indices
确定矩阵是否具有排序索引
方法:
__len__
\()__mul__
\(其他)解释其他并调用以下任一
arcsin
\()基于元素的反正弦。
arcsinh
\()以元素为单位的反正弦。
arctan
\()基于元素的弧线。
arctanh
\()以元素为单位的弧度。
argmax
\([axis, out] )返回轴上最大元素的索引。
argmin
\([axis, out] )返回轴上最小元素的索引。
asformat
\(格式[, copy] )以传递的格式返回此矩阵。
asfptype
\()将矩阵向上转换为浮点格式(如有必要)
astype
\(dtype[, casting, copy] )将矩阵元素强制转换为指定类型。
ceil
\()按元素排列的单元格。
check_format
\([full_check] )检查矩阵格式是否有效
conj
\([copy] )元素复数共轭。
conjugate
\([copy] )元素复数共轭。
copy
\()返回此矩阵的副本。
count_nonzero
\()非零条目数,相当于
deg2rad
\()元素方向的de2rad。
diagonal
\([k] )返回矩阵的第k条对角线。
dot
\(其他)普通点积
eliminate_zeros
\()在位删除零个图元。
expm1
\()基于元素的表达式1。
floor
\()基于图元的楼板。
getH
\()返回此矩阵的厄米转置。
get_shape
\()获得矩阵的形状。
getcol
\(J)以(M X 1)稀疏矩阵(列向量)的形式返回矩阵第j列的副本。
getformat
\()矩阵表示形式为字符串的格式。
getmaxprint
\()打印时显示的最大元素数。
getnnz
\([axis] )存储值的数量,包括显式零。
getrow
\(i)以(1 X N)稀疏矩阵(行向量)的形式返回矩阵第i行的副本。
log1p
\()基于元素的log1p。
matmat 已弃用!在SciPy 0.19.0中,不推荐使用BSR Matmat。
matvec 已弃用!在SciPy 0.19.0中,不推荐使用BSR matvec。
max
\([axis, out] )返回矩阵的最大值或沿轴的最大值。
maximum
\(其他)此矩阵与另一个矩阵之间的元素最大值。
mean
\([axis, dtype, out] )计算沿指定轴的算术平均值。
min
\([axis, out] )返回轴上矩阵的最小值或最大值。
minimum
\(其他)此矩阵与另一个矩阵之间的元素最小值。
multiply
\(其他)按点乘以另一个矩阵、向量或标量。
nonzero
\()非零折射率
power
\(n[, dtype] )此函数执行元素级电源。
prune
\()删除所有非零元素后的空格。
rad2deg
\()基于元素的rad2deg。
reshape
\(自身,形状[, order, copy] )在不更改稀疏矩阵数据的情况下为其赋予新形状。
resize
\(*形状)就地调整矩阵大小至给定的尺寸
shape
rint
\()基于元素的Rint。
set_shape
\(形状)看见 reshape 。
setdiag
\(值[, k] )设置阵列的对角或非对角元素。
sign
\()以元素为基础的符号。
sin
\()基于元素的罪过。
sinh
\()基于元素的SINH。
sort_indices
\()对此矩阵的索引进行排序 就位
sorted_indices
\()返回带有排序索引的此矩阵的副本
sqrt
\()基于元素的sqrt。
sum
\([axis, dtype, out] )对给定轴上的矩阵元素求和。
sum_duplicates
\()通过将重复的矩阵条目添加到一起来消除重复的矩阵条目
tan
\()按元素晒黑。
tanh
\()基于元素的TANH。
toarray
\([order, out] )返回此矩阵的密集ndarray表示。
tobsr
\([blocksize, copy] )将此矩阵转换为挡路稀疏行格式。
tocoo
\([copy] )将此矩阵转换为坐标格式。
tocsc
\([copy] )将此矩阵转换为压缩的稀疏列格式。
tocsr
\([copy] )将此矩阵转换为压缩的稀疏行格式。
todense
\([order, out] )返回此矩阵的密集矩阵表示形式。
todia
\([copy] )将此矩阵转换为稀疏对角线格式。
todok
\([copy] )将此矩阵转换为键字典格式。
tolil
\([copy] )将此矩阵转换为列表列表格式。
trace
\([offset] )返回稀疏矩阵沿对角线的总和。
transpose
\([axes, copy] )反转稀疏矩阵的维数。
trunc
\()基于元素的主干。
__getitem__