Python中文
首页
教程
问答
标签
搜索
登录
注册
向量与csr_矩阵的左乘法
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我有一个大小为50*10000的csr格式稀疏矩阵<code>A</code>,和一个大小为50的np.array <code>v</code>,我想为其计算乘积<code>v.dot(A)</code>。我如何有效地做到这一点</p> <p>当然,运行<code>v.dot(A)</code>不是一个好主意,因为scipy.sparse不支持np操作。不幸的是,据我所知,scipy.sparse没有矩阵与向量左乘的函数</p> <p>我尝试过以下方法,但所有这些方法似乎都花费了大量时间:</p> <ol> <li><strong>转座A并使用标准<code>.dot</code></strong></li> </ol> <p>我转置A,然后使用<code>.dot</code>方法。它将<code>A.T</code>与<code>v</code>相乘作为列向量</p> <pre><code>``` >>> A = sparse.csr_matrix([[1, 2, 0, 0], ... [0, 0, 3, 4]]) >>> v = np.array([1, 1]) >>> A.T.dot(v) array([1, 2, 3, 4], dtype=int32) ``` </code></pre> <ol start=“2”> <li><strong>对v进行转置,并使用乘法和求和方法</strong></li> </ol> <p>我正在使用<code>csr_matrix.multiply()</code>方法,它执行逐点乘法。我将对这些行求和</p> <pre><code>>>> vt = v[np.newaxis].T >>> A.multiply(vt).sum(axis=0) matrix([[1, 2, 3, 4]], dtype=int32) </code></pre> <ol start=“3”> <li><strong>将v转换为稀疏矩阵并使用<code>.dot</code>方法</strong></li> </ol> <p>我尝试了不同的施工方法,似乎都很昂贵。这是最具可读性的示例(可能不是最有效的示例):</p> <pre><code>>>> sparse_v = sparse.csr_matrix(v) >>> sparse_v.dot(A).todense() matrix([[1, 2, 3, 4]], dtype=int32) </code></pre> <p>方法1是目前最快的,但是<code>.T</code>方法仍然非常耗时。难道没有更好的方法在稀疏矩阵上执行左乘法吗</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>@operator也适用于scipy稀疏矩阵,与您的方法进行简短而粗略的性能比较表明@operator的性能与您的方法1类似</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
jupyter运行一个旧的pytorch版本
5 回答
Jupyter运行不同版本的卸载库?
6 回答
Jupyter运行指定的键盘快捷键
5 回答
Jupyter通过.local文件“逃逸”virtualenv。我该如何缓解这种情况?
4 回答
Jupyter重新加载自定义样式
7 回答
Jupyter错误:“没有名为Jupyter_core.paths的模块”
9 回答
jupyter错误:无法在随机林中将决策树视为png
6 回答
Jupyter错误'内核似乎已经死亡,它将自动重新启动'为一个给定的代码块
6 回答
Jupyter错误地用阿拉伯语和字母数字元素显示Python列表
2 回答
Jupyter隐藏数据帧索引,但保留原始样式
2 回答
Jupyter集线器:启动器中出现致命错误。。。系统找不到指定的文件
8 回答
Jupyther中相同值的相同哈希,但导出到Bigquery时不相同
6 回答
Jupy上Python的读/写访问问题
3 回答
jupy上没有模块cv
3 回答
Jupy上的排序错误
9 回答
Jupy中bqplot图形的紧凑布局
6 回答
Jupy中matplotlib plot的连续更新
9 回答
Jupy中Numpy函数的文档
9 回答
Jupy中Pandas的自动完成问题
3 回答
jupy中Qt后端的Matplotlib动画
2 回答