【发布时间】:2019-02-12 09:54:23
【问题描述】:
如有重复请见谅。
我有一个大的coo_matrix(比如x)由另一个函数返回,我需要在具有相同行数和单列的numpy数组a中对匹配条件的行进行切片(二进制值)。
我正在使用 scipy.sparse.hstack([x,a]) 将两者连接起来,以便做这样的事情
x1 = x[x[:,-1] == 0]
x2 = x[x[:,-1] == 1]
但失败并出现以下错误。
TypeError: 'coo_matrix' object is not subscriptable
x.toarray() 解决方案由于MemoryError 而不起作用。
有没有办法做到以上几点?最后我需要切片矩阵为coo_matrix。
【问题讨论】:
-
您应该更明确地说明这个明显的失败。但是我猜你被告知
coo不支持索引。csr和lil等其他格式支持索引。也就是说,x[..]==0将是一个问题,因为在稀疏矩阵中大多数元素将为 0。但您可以使用密集的最后一列x1=x[:,-1].toarray()制作掩码。 -
谢谢保罗,我已经用具体错误更新了问题。
-
正如我所怀疑的,
coo格式矩阵尚未实现索引。对于这种表示方式来说,它太慢太尴尬了。我在答案中添加了一条关于使用数组a的注释,没有hstack。
标签: scipy sparse-matrix