键字典格式 (DOK)¶
- Python 字典的子类
键是 (行, 列) 索引元组(不允许重复条目)
值是相应的非零值
有效地用于增量构建稀疏数组
- 构造函数接受
密集数组/矩阵
稀疏数组/矩阵
形状元组(创建空数组)
有效地 O(1) 访问单个元素
灵活的切片,更改稀疏结构是有效的
构建完成后可以有效地转换为 coo_array
算术运算速度慢(使用 for 循环和 dict.items())
- 使用
当稀疏模式事先未知或发生变化时
示例¶
逐元素创建 DOK 数组
>>> mtx = sp.sparse.dok_array((5, 5), dtype=np.float64) >>> mtx <Dictionary Of Keys sparse array of dtype 'float64' with 0 stored elements and shape (5, 5)> >>> for ir in range(5): ... for ic in range(5): ... mtx[ir, ic] = 1.0 * (ir != ic) >>> mtx <Dictionary Of Keys sparse array of dtype 'float64' with 20 stored elements and shape (5, 5)> >>> mtx.toarray() array([[0., 1., 1., 1., 1.], [1., 0., 1., 1., 1.], [1., 1., 0., 1., 1.], [1., 1., 1., 0., 1.], [1., 1., 1., 1., 0.]])
切片和索引
>>> mtx[1, 1] np.float64(0.0) >>> mtx[[1], 1:3] <Dictionary Of Keys sparse array of dtype 'float64' with 1 stored elements and shape (1, 2)> >>> mtx[[1], 1:3].toarray() array([[0., 1.]]) >>> mtx[[2, 1], 1:3].toarray() array([[1., 0.], [0., 1.]])