python – Scipy稀疏矩阵元素明智的乘法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – Scipy稀疏矩阵元素明智的乘法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1138字,纯文字阅读大概需要2分钟。
内容图文
![python – Scipy稀疏矩阵元素明智的乘法](/upload/InfoBanner/zyjiaocheng/795/a21b2464eddc44d3a43e004d42fa8799.jpg)
我正在尝试为两个大型稀疏矩阵进行逐元素乘法.两者的大小都在(400K X 500K)左右,大约有100M元素.
但是,它们可能在相同位置不具有非零元素,并且它们可能不具有相同数量的非零元素.在任何一种情况下,我都可以将一个矩阵的非零值与另一个矩阵中的零值相乘为零.
我在每种方法中都会耗尽内存(8GB),这没有多大意义.我不应该.这些是我尝试过的.
A和B是稀疏矩阵(Ive尝试过COO和CSC格式).
# I have loaded sparse matrices A and B, and have a file opened in write mode
row,col = A.nonzero()
index = zip(row,col)
del row,col
for i,j in index :
# Approach 1
A[i,j] *= B[i,j]
# Approach 2
someopenfile.write(' '.join([str(i),str(j),str(A[j,j]*B[i,j]),'\n']))
# Approach 3
if B[i,j] != 0 :
A[i,j] = A[i,j]*B[i,j] # or, I wrote it to a file instead
# like in approach 2
如果我注释掉for循环,我看到我使用了近3.5GB的内存.但是,当我使用循环时,无论是将产品写入文件还是返回矩阵,内存使用量都会达到完整内存,导致我停止执行,或者系统挂起.如何在不消耗大量内存的情况下进行此操作?
解决方法:
我怀疑当您执行操作时,您的稀疏矩阵变得非稀疏:
A.multiply(B)
我怀疑它会比你可以轻松做的任何事情都更好地进行优化.
如果A不是您可能需要的正确类型的稀疏矩阵:
A = A.tocsr()
# May also need
# B = B.tocsr()
A = A.multiply(B)
内容总结
以上是互联网集市为您收集整理的python – Scipy稀疏矩阵元素明智的乘法全部内容,希望文章能够帮你解决python – Scipy稀疏矩阵元素明智的乘法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。