2.5.2.2.4. Coordinate Format (COO)

  • 也称为“ijv”或“三元组”格式
    • 三个NumPy数组:rowcoldata
    • data [i](row [i],col [i])位置的值
    • 允许重复条目
    • _data_matrix的子类(具有.data属性的稀疏矩阵类)
  • 快速格式构造稀疏矩阵

  • 构造函数接受:
    • 密集矩阵(阵列)
    • 稀疏矩阵
    • 形状元组(创建空矩阵)
    • (data,ij)元组
  • 非常快速的转换为CSR / CSC格式

  • 快速矩阵*向量(稀疏工具)

  • 快速和容易的逐项操作
    • 直接操作数组数组(快速NumPy机械)
  • 没有切片,没有算术(直接)

  • 使用:
    • 促进稀疏格式之间的快速转换

    • 当转换为其他格式(通常是CSR或CSC)时,重复条目将汇总在一起

      • 促进有限元矩阵的有效构造

2.5.2.2.4.1. Examples

  • 创建空COO矩阵:

    >>> mtx = sparse.coo_matrix((3, 4), dtype=np.int8)
    
    >>> mtx.todense()
    matrix([[0, 0, 0, 0],
    [0, 0, 0, 0],
    [0, 0, 0, 0]], dtype=int8)
  • 创建使用(data,ij)元组:

    >>> row = np.array([0, 3, 1, 0])
    
    >>> col = np.array([0, 3, 1, 2])
    >>> data = np.array([4, 5, 7, 9])
    >>> mtx = sparse.coo_matrix((data, (row, col)), shape=(4, 4))
    >>> mtx
    <4x4 sparse matrix of type '<... 'numpy.int64'>'
    with 4 stored elements in COOrdinate format>
    >>> mtx.todense()
    matrix([[4, 0, 9, 0],
    [0, 7, 0, 0],
    [0, 0, 0, 0],
    [0, 0, 0, 5]])
  • 重复项汇总在一起:

    >>> row = np.array([0, 0, 1, 3, 1, 0, 0])
    
    >>> col = np.array([0, 2, 1, 3, 1, 0, 0])
    >>> data = np.array([1, 1, 1, 1, 1, 1, 1])
    >>> mtx = sparse.coo_matrix((data, (row, col)), shape=(4, 4))
    >>> mtx.todense()
    matrix([[3, 0, 1, 0],
    [0, 2, 0, 0],
    [0, 0, 0, 0],
    [0, 0, 0, 1]])
  • 没有切片...:

    >>> mtx[2, 3]   
    
    Traceback (most recent call last):
    ...
    TypeError: 'coo_matrix' object ...