[英]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.