入门
安装
如果您尚未安装,请安装 sparse
库
pip install sparse
创建
首先,让我们从一个 numpy.ndarray
中构建一个稀疏的 sparse.COO
数组
import numpy as np
import sparse
x = np.random.random((100, 100, 100))
x[x < 0.9] = 0 # fill most of the array with zeros
s = sparse.COO(x) # convert to sparse array
它们存储相同的信息并支持许多相同的操作,但稀疏版本占用更少的内存空间
>>> x.nbytes
8000000
>>> s.nbytes
1102706
>>> s
<COO: shape=(100, 100, 100), dtype=float64, nnz=100246, fill_value=0.0>
有关构建稀疏数组的更高效方法,请参阅关于构建稀疏数组的文档。
计算
许多常用的 Numpy 操作适用于 sparse.COO
对象,就像它们适用于 numpy.ndarray
对象一样。这包括算术运算、numpy.ufunc
操作,或像 tensordot 和 transpose 这样的函数。
>>> np.sin(s) + s.T * 1
<COO: shape=(100, 100, 100), dtype=float64, nnz=189601, fill_value=0.0>
然而,将零元素映射到非零元素的操作通常会改变填充值,而不是引发错误。
>>> y = s + 5
<COO: shape=(100, 100, 100), dtype=float64, nnz=100246, fill_value=5.0>
然而,如果您确定要将稀疏数组转换为密集数组,您可以使用 todense
方法(这会生成一个 numpy.ndarray
)
y = s.todense() + 5