python - 矩阵乘法:保持 scipy.sparse.dok_matrix 格式
问题描述
我正在尝试使用 scipy 以 dok(键字典)格式执行稀疏线性代数计算。当我将两个矩阵相乘时,格式从 dok 类型变为 csr 格式,这对于数据和后续操作来说是一种低效的格式。
如何保持 dok 格式?
我看过文档:
但看不到任何信息自动类型转换或是否以及如何避免。
看这个例子:
from scipy.sparse import dok_matrix
my_mat = dok_matrix([[1,2], [3,4]])
print(type(my_mat.dot(my_mat)))
print(type(my_mat @ my_mat))
显示格式已更改:
<class 'scipy.sparse.csr.csr_matrix'>
<class 'scipy.sparse.csr.csr_matrix'>
解决方案
只需转换回来:
result = result.todok()
CSR 对于后续操作可能是一种低效的格式(或者可能不是,我们无法判断),但它对于矩阵乘法非常有用。尝试使矩阵乘法代码在本机上对 DOK 结果进行操作会比仅转换结果要慢。
推荐阅读
- java - Android 聊天游戏基础?
- javascript - Visual Studio Gulp Babel 解析导入
- tensorflow - 如何使用 tf.nn.avg_pool 获得与 tf.reduce_mean 相同的结果
- android - 长时间打开时,Google Map 在 Android TV 中闪烁
- android - 添加 MathView 库后,我的 recyclerview Steal 工作
- rust - Rocket Framework 示例无法编译
- laravel - GAE 谷歌云平台上的 Laravel.log 在哪里?
- javascript - 屏幕导航不适用于 Params React Navigation
- svg - 是否可以使用 CSS 变量来更改 SVG 对象的 TITLE(悬停描述)内容?
- ballerina - #ballerina 中的序列图