當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。