【发布时间】:2017-02-17 23:51:10
【问题描述】:
我正在尝试从 numpy 中获得最大性能,并且想知道是否有更好的方法来计算带有很多零的数组的点积 例如:
a = np.array([[0, 3, 0], [1, 0, 1]])
print a.dot([1, 2, 5])
这是一个小例子,但如果我们有一个更大的数组,可以说在数组中的任何位置都有 80% 的零,我的问题是有没有更好或更快速的方法来计算点积有这么多零吗?
【问题讨论】:
-
也许使用稀疏矩阵会更快。
-
有一个
scipy.sparse包可以创建和使用稀疏矩阵。但根据我的经验,矩阵必须具有低于 1% 的稀疏度才能获得优于numpydot的速度优势(即 99% 为零)。 -
我会研究稀疏矩阵,但你会建议一直使用它还是只在它高于 99% 时使用它@hpaulj
-
有足够的学习曲线和限制,我不会为了加速一些
dot产品而切换。它们最初是为大型线性代数问题(有限元、差分)而开发的,但现在也可以使用机器学习。这些矩阵还有什么用途? -
现在只是点积我可能需要在将来转置它们,但没有别的
标签: python numpy dot-product