Python矩阵乘法:稀疏乘法密集

2024-04-26 00:58:22 发布

您现在位置:Python中文网/ 问答频道 /正文

给定代码片段:

B = A @ M - T

其中A是CSRscipy稀疏矩阵MT是两个numpy数组

问题:在矩阵运算期间,numpy是将A视为密集矩阵,还是将MT视为两个稀疏矩阵

我怀疑后一种情况是正确的,因为生成的矩阵B不是稀疏格式

我还注意到,如果我将A的格式更改为稠密格式,这个操作会慢得多,这与我的猜测相矛盾


Tags: 代码numpy格式情况矩阵数组密集csrscipy
1条回答
网友
1楼 · 发布于 2024-04-26 00:58:22

Numpy不做稀疏矩阵。Scipy执行矩阵乘法(这意味着与numpy不同,没有多线程)

A保持稀疏,但如果M是密集数组,则A@M填充密集数组

>>> import numpy as np
>>> from scipy import sparse
>>> A = sparse.random(100, 10, density=0.1, format='csr')
>>> B = np.random.rand(10, 10)
>>> type(A@B)
<class 'numpy.ndarray'>
>>> type(B@A.T)
<class 'numpy.ndarray'>

请注意,某些稀疏操作仍然提供矩阵,而不是数组:

>>> N = sparse.random(100, 10, density=0.1, format='csr')
>>> type(A@B - N)
<class 'numpy.matrix'>

相关问题 更多 >

    热门问题