假设我有 Numpy 数组 p
和一个 Scipy 稀疏矩阵 q
这样
>>> p.shape
(10,)
>>> q.shape
(10,100)
我想做 p 和 q 的点积。当我尝试使用 numpy 时,我得到以下信息:
>>> np.dot(p,q)
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist packages/IPython/core/interactiveshell.py", line 2883, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-96-8260c6752ee5>", line 1, in <module>
np.dot(p,q)
ValueError: Cannot find a common data type.
我在 Scipy documentation 中看到那个
As of NumPy 1.7, np.dot is not aware of sparse matrices, therefore using it will result on unexpected results or errors. The corresponding dense matrix should be obtained first instead
但这违背了我使用稀疏矩阵的目的。 Soooo,我如何在稀疏矩阵和一维 numpy 数组(numpy 矩阵,我对两者都持开放态度)之间做点积而不丢失矩阵的稀疏性?
我正在使用 Numpy 1.8.2 和 Scipy 0.15.1。
最佳答案
使用*
:
p * q
请注意,*
对稀疏矩阵使用类似矩阵的语义而不是类似数组的语义,因此它计算矩阵乘积而不是广播乘积。
关于python - 一维 numpy 数组和 scipy 稀疏矩阵之间的点积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31040188/