python中的稀疏矩阵1(随手记)

分析一下这段代码

test_csr = csr_matrix((test, (row, col)), shape=graph_shape)

这行代码使用了 csr_matrix 类来创建一个稀疏矩阵,其中的数据 (test)、行索引 (row) 和列索引 (col) 由参数提供。

  • test: 这是一个包含稀疏矩阵中非零元素的数组。在这里,它作为矩阵的数据。

  • (row, col): 这是一个包含 (i, j) 对的元组,其中 ij 分别是稀疏矩阵中每个非零元素的行索引和列索引。

  • shape=graph_shape: 这是稀疏矩阵的形状,即矩阵的行数和列数。

  • csr_matrix(...): 这是 scipy.sparse 模块中的 csr_matrix 类的构造函数,用于创建一个稀疏矩阵。"CSR" 代表 "Compressed Sparse Row",这是一种存储稀疏矩阵的一种方式。

通过将这些参数传递给 csr_matrix 构造函数,代码创建了一个稀疏矩阵 test_csr。这个矩阵的非零元素、行索引和列索引是由test、rowcol 提供的。最终矩阵的形状由 graph_shape 指定。

这样的操作通常在处理图结构或稀疏数据时使用,其中使用稀疏矩阵可以有效地存储和处理大量的零元素。

在这段代码中,test被用作稀疏矩阵的非零元素数组。根据 csr_matrix 构造函数的规则,test中的元素会按照 (i, j) 对中对应的位置,被放置在稀疏矩阵的相应行和列上。

具体来说,假设 test是一个一维数组,其长度为 N,而 (row, col) 是包含 (i, j) 对的元组数组,长度也为 N

对于每个 ktest[k] 的值将被放置在稀疏矩阵的第 row[k] 行、第 col[k] 列的位置。这样,通过 (row[k], col[k]) 对应的坐标,test[k] 就被放置在稀疏矩阵中。

例如,考虑以下简单的示例:

import numpy as np
from scipy.sparse import csr_matrix

# 假设 ang_dists、row、col 是如下定义的
test = np.array([1.0, 2.0, 3.0])
row = np.array([0, 1, 2])
col = np.array([2, 0, 1])
graph_shape = (3, 3)  # 稀疏矩阵的形状

# 创建稀疏矩阵
test_csr = csr_matrix((test, (row, col)), shape=graph_shape)

print(test_csr.toarray())

在这个例子中,test中的元素分别被放置在稀疏矩阵的 (0, 2)、(1, 0)、(2, 1) 的位置,形成了一个稀疏矩阵。最后通过 toarray() 方法将稀疏矩阵转换为密集矩阵以便查看。

输出:

[[0. 0. 1.] 
[2. 0. 0.]
[0. 3. 0.]] 

这个输出表示稀疏矩阵的密集表示,其中非零元素的值分别是 1.0、2.0 和 3.0,对应的行列位置是 (0, 2)、(1, 0) 和 (2, 1)。其余位置上的值为零。

你可能感兴趣的:(python,矩阵,开发语言)