繁体   English   中英

Scipy稀疏矩阵:列的布尔组合

[英]Scipy sparse matrix: boolean combinations of columns

我想使用Scipy(v0.18.1)中的布尔运算来组合稀疏(二进制)数组的列。 对于密集矩阵,它可以很好地做到:

data[:,5] & ~data[:,23] & data[:,400]

折叠成一列。 但是,在使用稀疏数组执行此操作时出现错误。

布尔部分的错误:

"unsupported operand type(s) for &: 'csc_matrix' and 'csc_matrix'"

〜(反转)部分的错误:

bad operand type for unary ~: 'csc_matrix'

可以使用稀疏布尔矩阵之间的元素相乘a.multiply(b) (“和”)和加法a+b (“或”)来实现二进制运算。 关于否定~ ,将切片转换为稠密的矩阵可能是值得的,因为稀疏矩阵的否定无论如何都会给出(可能非常密集)的密集矩阵。 在某些情况下,谨慎使用戴摩根定律可能会产生重大变化,并尽可能避免(或减少)进行这种转换的需要。

data[:,5] & ~data[:,23]的可能技巧可能是data[:,5] > data[:,23]

data[:,5] & ~data[:,23] & data[:,400]可以写成(data[:,5] > data[:,23]).multiply(data[:,400])尽管它不是很可读。

暂无
暂无

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

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