繁体   English   中英

具有稀疏矩阵的布尔索引Numpy数组

[英]Boolean index Numpy array with sparse matrix

我试图通过稀疏矩阵在numpy数组上应用布尔索引。

A = dense n x n matrix, where n is large

B = sparse n x n Boolean matrix

操作示例:

A[B] *= 2

A[~B] *= -2

是否有一种有效的方法可以在不将稀疏矩阵转换为密集矩阵(这会导致内存问题)的情况下实现这一目标?

您可以通过将稀疏矩阵中的非零值(即True)转换为COO格式来访问与之相关的行索引和列索引:

B = B.tocoo()

然后

A[B.row, B.col] *= 2

避免将B转换为密集矩阵。


如果B稀疏,则~B非常密集。 为了有效处理A[~B] *= -2 ,我们应尽量避免直接评估~B 相反,我们可以在任何地方乘以-2

A *= -2

然后修复B为True的那些位置:

A[B.row, B.col] *= -1/2   

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM