python - 一维 numpy 数组和 scipy 稀疏矩阵之间的点积

标签 python numpy scipy sparse-matrix dot-product

假设我有 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/

相关文章:

python - 数据集的傅立叶平滑

python - 使用来自 SciPy 的 wavfile.write 在 Python 中编写 wav 文件

python - 基本过滤器返回一个空列表

python - 对csv文件进行解析和分析

python : RuntimeWarning: overflow encountered

python - 如何用带有索引的另一数组替换一个 numpy 数组中的值

python - 哪种稀疏矩阵格式更适合构建分块矩阵

Python 自定义数值类型 : Wrap around number

python - 删除特定模式之前的字符串部分

python - 有没有一种方法可以不慢地增加 numpy 数组?