gpt4 book ai didi

python - scipy:基本说明

转载 作者:太空狗 更新时间:2023-10-29 21:53:30 36 4
gpt4 key购买 nike

我并不理解coo_matrixcsr_matrixcsc_matrix 之间的区别。

文档确实提到 coo_matrix 对于算术运算效率不高,我们需要将其转换为 csrcsc。我正在研究矩阵乘法。如果我只有一个 coo_matrix 并将其转换为 csrcsv 矩阵,我不明白幕后发生了什么。

另外如果我有类似的东西

A = array([[1,2,3,0,0,5],
[5,0,0,1,2,0]])
print coo_matrix(A)

打印

  (0, 0)    1
(0, 1) 2
(0, 2) 3
(0, 5) 5

这很酷。但是有没有办法,我可以直接输入我的矩阵作为打印的矩阵。类似于定义一个空 COO 矩阵,然后开始定义 coo_matrix 的值,就像我们在 matlab 中所做的那样。

谢谢!

最佳答案

这个术语不是 python scipy 发明的,而是已经存在于稀疏矩阵表示科学中

存在多种表示稀疏矩阵的格式。
格式可以分为两组:

  1. 那些支持高效修改的,例如 DOK(键字典)、LIL(列表列表)或 COO(坐标列表)。这些通常用于构建矩阵。
  2. 支持高效访问和矩阵运算的那些,例如 CSR(压缩稀疏行)或 CSC(压缩稀疏列)。

坐标列表(COO)

COO stores a list of (row, column, value) tuples. Ideally, the entries are sorted (by row index, then column index) to improve random access times. This is another format which is good for incremental matrix construction

压缩稀疏行 (CSR)

压缩稀疏行 (CSR) 或压缩行存储 (CRS) 格式表示矩阵 M 由三个(一维)数组组成,分别包含非零值、行的范围和列索引。这种格式允许快速行访问和矩阵向量乘法。

CSR 格式使用三个(一维)数组(A、IA、JA)以行形式存储稀疏 m×n 矩阵 M。令NNZ表示M中非零项的个数。(注意这里应使用从零开始的索引。)

数组 A 的长度为 NNZ,并以从左到右从上到下(“行优先”)的顺序保存 M 的所有非零条目。

  1. 数组 IA 的长度为 m + 1。它由以下递归定义定义:
    IA[0] = 0
    IA[i] = IA[i − 1] +(原矩阵第(i − 1)行非零元素个数)

因此,IA的前m个元素存储了M中每行第一个非零元素到A中的索引,最后一个元素IA[m]存储了NNZ,即A中的元素个数,也可以认为of 作为矩阵 M 末尾之后的幻像行的第一个元素在 A 中的索引。
从元素 A[IA[i]] 中读取原始矩阵的第 i 行的值到 A[IA[i + 1] − 1](包括两端),即从一行的开始到下一行开始之前的最后一个索引。

第三个数组 JA 包含 A 的每个元素在 M 中的列索引,因此长度也是 NNZ。

For example, the matrix 0 0 0 0
5 8 0 0
0 0 3 0
0 6 0 0

是一个有 4 个非零元素的 4 × 4 矩阵,因此

A = [ 5 8 3 6 ]
IA = [ 0 0 2 3 4 ]
JA = [ 0 1 2 1 ]

来源:https://en.wikipedia.org/wiki/Sparse_matrix

关于python - scipy:基本说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11216906/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com