如何从大稀疏CSC矩阵中获取列

3

我有一个稀疏矩阵 X

<1000000x153047 sparse matrix of type '<class 'numpy.float64'>'
with 5082518 stored elements in Compressed Sparse Column format>

我有一个数组

columns_to_use 

这段代码涉及到矩阵X的10000个列的id。我只想使用这些列而删除其他列。我尝试使用以下代码:

X_new = X[:, columns_to_use]

当数据量较小(10,000行)时,这种方法可以很好地运作。但是,当数据量达到100,000行或以上时,会出现内存错误。如何在不出现内存错误的情况下获取特定列?


稀疏列选择是通过矩阵乘法完成的,如 https://dev59.com/N5rga4cB1Zd3GeqPrsSs 中所述。这样的选择将创建一个新的稀疏矩阵。您能够对这个大矩阵进行其他计算吗?复制一份? - hpaulj
1个回答

1

我得到了这样的决定:

cols = []
for i in columns_to_use:
    cols.append(X[:,i])
X_new = hstack(cols)

它运行速度足够快,没有任何错误。而且它很容易使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接