我试图将一些Matlab代码“翻译”成Python,Matlab中有一行代码将稀疏矩阵中的多行设置为0:
Ks(idx,:)=0; %no affinity for W inside fs
其中Ks
是稀疏矩阵(对称且大小相当大),而{Ks
仍然是对称的:
在Python中做类似的事情(Ks[idx,:]=0
)似乎只对小矩阵有效,当它变大时我得到MemoryError
。目前,我的Ks
是一个csr矩阵,将其转换为lil
,而且这样做非常慢。在
我不太熟悉稀疏矩阵,我知道在Python中有不止一种类型(例如csr、csc、lil等),但是在Matlab代码中没有这样的区别,我只找到了一个函数调用sparse()
。那么在这种情况下,我的最佳选择是什么?在
提前谢谢。在
一种加速的方法是,不要将稀疏矩阵元素设置为零,而是先将numpy nd array的元素设置为零,然后转换为稀疏矩阵。在下面的例子中,我的速度提高了10倍以上。在
相关问题 更多 >
编程相关推荐