【发布时间】:2017-05-05 21:38:27
【问题描述】:
我想在 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'
【问题讨论】:
-
在应用一元
~之前,您可能需要将切片转换为密集切片。无论如何,对稀疏矩阵求逆会得到一个(可能非常)密集矩阵。 -
@LucaCiti 好点!他们可能出于性能(和一致性)的原因没有实现它,因为稀疏矩阵的补码不再是真正的稀疏了。
-
@LucaCiti 好的,但也许我可以通过检查非零元素来做一个技巧。布尔部分呢?
-
@cgreen 看我的回答
标签: python numpy scipy sparse-matrix