2024-04-26 00:58:22 发布
网友
给定代码片段:
B = A @ M - T
其中A是CSRscipy稀疏矩阵,M和T是两个numpy数组
A
M
T
问题:在矩阵运算期间,numpy是将A视为密集矩阵,还是将M和T视为两个稀疏矩阵
我怀疑后一种情况是正确的,因为生成的矩阵B不是稀疏格式
B
我还注意到,如果我将A的格式更改为稠密格式,这个操作会慢得多,这与我的猜测相矛盾
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'>
Numpy不做稀疏矩阵。Scipy执行矩阵乘法(这意味着与numpy不同,没有多线程)
A保持稀疏,但如果M是密集数组,则A@M填充密集数组
请注意,某些稀疏操作仍然提供矩阵,而不是数组:
相关问题 更多 >
编程相关推荐