📜  将 ndarray 转换为 csr_matrix (1)

📅  最后修改于: 2023-12-03 15:09:32.230000             🧑  作者: Mango

将 ndarray 转换为 csr_matrix

当我们需要将一个numpy的ndarray转换为稀疏矩阵(csr_matrix)时,可以使用scipy库中的sparse模块。

1. 导入依赖库
import numpy as np
from scipy.sparse import csr_matrix
2. 创建ndarray
arr = np.array([[1, 0, 2], [0, 3, 0], [4, 0, 5]])
print(arr)

输出:

array([[1, 0, 2],
       [0, 3, 0],
       [4, 0, 5]])
3. 将ndarray转换为csr_matrix
csr = csr_matrix(arr)
print(csr)

输出:

  (0, 0)        1
  (0, 2)        2
  (1, 1)        3
  (2, 0)        4
  (2, 2)        5
4. csr_matrix 的属性

csr_matrix 转换后的结果,依然保留了 ndarray 的非零元素,同时也记录了它们在矩阵中的位置。我们可以通过以下属性来查看稀疏矩阵的信息。

  • shape:返回稀疏矩阵的形状
  • data:返回稀疏矩阵中的数据
  • indices:返回稀疏矩阵中非零数据所在的下标
  • indptr:返回稀疏矩阵中每一行的第一个非零元素在data中的位置
print(csr.shape) # (3,3)
print(csr.data) # [1 2 3 4 5]
print(csr.indices) # [0 2 1 0 2]
print(csr.indptr) # [0 2 3 5]
5. 总结

在需要处理大规模矩阵时,稀疏矩阵是非常有用的数据结构。在numpy ndarray 转换成稀疏矩阵过程中,我们需要使用 scipy.sparse 库的 csr_matrix 函数。转换后的稀疏矩阵具有很多优秀的性能指标,使用它可以有效地优化相关算法的运算速度及内存消耗。