gpt4 book ai didi

python - 稀疏 SciPy 矩阵与两个 NumPy 向量的矩阵乘法

转载 作者:太空宇宙 更新时间:2023-11-03 14:15:23 25 4
gpt4 key购买 nike

假设我想计算二次形式x^T A y,其中xy是NumPy向量,并且我已经存储A 作为 SciPy csc_matrix 以提高效率。

似乎执行计算的一种方法是

(x * A).dot(y)

因为 SciPy 使用 * 表示矩阵乘积,而 NumPy 使用 .dot 代替。

虽然这种方法给了我正确的答案,但对我来说似乎相当违反直觉,我想知道是否有更可读/更有效的方法?

最佳答案

正如 Paul Panzer 所说,x @ A @ y 可读性最强,并且按预期工作(需要 Python 3.5+ 和 NumPy 1.10+)。

SciPy 也使用 dot 进行矩阵乘法,在他们自己的 sparse matrices page 示例中。所以你可以像

一样一致地使用点
x.dot(A.dot(y))

A.dot(y).dot(x) 尽管后者更难阅读,因为 x 不合适。

不能使用x.dot(A).dot(y)的唯一原因是NumPy不理解稀疏矩阵,因此x的dot方法> 不适合与稀疏矩阵相乘。

尽管 SciPy 稀疏矩阵将 x * AA * y 解释为矩阵乘法,但我宁愿永远不要使用该选项,因为如果 A 存在错误操作的风险由于某种原因改变为稠密矩阵。 SciPy 文档中似乎没有提倡 * 的这种用法;所有示例都使用

关于python - 稀疏 SciPy 矩阵与两个 NumPy 向量的矩阵乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48243928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com