当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy sparse.coo_array用法及代码示例


本文简要介绍 python 语言中 scipy.sparse.coo_array 的用法。

用法:

class  scipy.sparse.coo_array(arg1, shape=None, dtype=None, copy=False)#

COOrdinate 格式的稀疏数组。

也称为‘ijv’ 或‘triplet’ 格式。

这可以通过多种方式实例化:

coo_array(D)

其中 D 是二维 ndarray

coo_array(S)

与另一个稀疏数组或矩阵 S (相当于 S.tocoo())

coo_array((M, N), [dtype])

构造一个形状为 (M, N) 的空数组 dtype 是可选的,默认为 dtype='d'。

coo_array((数据, (i, j)), [形状=(M, N)])
从三个数组构造:
  1. data[:] 数组的条目,以任意顺序

  2. i[:] 数组条目的行索引

  3. j[:] 数组条目的列索引

其中 A[i[k], j[k]] = data[k] 。未指定形状时,从索引数组推断

注意

稀疏数组可用于算术运算:它们支持加法、减法、乘法、除法和矩阵幂。

COO格式的优势

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

  • 允许重复条目(参见示例)

  • 与 CSR/CSC 格式之间的快速转换

COO格式的缺点

  • 不直接支持:
    • 算术运算

    • slicing

预期用途

  • COO 是一种用于构建稀疏数组的快速格式

  • 构建 COO 数组后,转换为 CSR 或 CSC 格式以进行快速算术和矩阵向量运算

  • 默认情况下,当转换为 CSR 或 CSC 格式时,重复的 (i,j) 条目将被汇总在一起。这有助于有效构建有限元矩阵等。 (见示例)

规范格式

  • 条目和索引按行排序,然后按列排序。

  • 没有重复的条目(即重复的 (i,j) 位置)

  • 数据数组可以有明确的零。

例子

>>> # Constructing an empty array
>>> import numpy as np
>>> from scipy.sparse import coo_array
>>> coo_array((3, 4), dtype=np.int8).toarray()
array([[0, 0, 0, 0],
       [0, 0, 0, 0],
       [0, 0, 0, 0]], dtype=int8)
>>> # Constructing an array using ijv format
>>> row  = np.array([0, 3, 1, 0])
>>> col  = np.array([0, 3, 1, 2])
>>> data = np.array([4, 5, 7, 9])
>>> coo_array((data, (row, col)), shape=(4, 4)).toarray()
array([[4, 0, 9, 0],
       [0, 7, 0, 0],
       [0, 0, 0, 0],
       [0, 0, 0, 5]])
>>> # Constructing an array with duplicate indices
>>> 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])
>>> coo = coo_array((data, (row, col)), shape=(4, 4))
>>> # Duplicate indices are maintained until implicitly or explicitly summed
>>> np.max(coo.data)
1
>>> coo.toarray()
array([[3, 0, 1, 0],
       [0, 2, 0, 0],
       [0, 0, 0, 0],
       [0, 0, 0, 1]])

属性

dtype 类型

数组的数据类型

shape 2元组

阵列的形状。

ndim int

维数(始终为 2)

nnz

存储值的数量,包括显式零。

size

存储值的数量。

data

数组的COO格式数据数组

row

数组的COO格式行索引数组

col

数组的COO格式列索引数组

has_canonical_format bool

矩阵是否有排序索引并且没有重复项

format

矩阵的格式字符串。

T

转置。

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.sparse.coo_array。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。