You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何找出Python CSR大型稀疏矩阵中非全零列的索引

找出CSR稀疏矩阵的非全零列索引

对于大型CSR稀疏矩阵,直接转换为稠密数组会占用大量内存,推荐利用CSR矩阵的内部结构高效获取非全零列索引:

  1. 确保矩阵为CSR格式(如果是其他稀疏格式如DOK,先转换)
  2. 提取CSR矩阵的indices数组(存储所有非零元素的列索引)
  3. 对indices数组取唯一值并排序,得到的就是非全零列的索引列表

示例代码

import scipy.sparse as sparse
import numpy as np

# 构造示例矩阵
s = sparse.dok_matrix((2,4))
s[0,0] = 8
s[0,3] = 9

# 转换为CSR格式
s_csr = sparse.csr_matrix(s)

# 获取非全零列索引
non_zero_col_indices = np.unique(s_csr.indices).tolist()

print(non_zero_col_indices)  # 输出: [0, 3]

原理说明

CSR矩阵的indices数组记录了每个非零元素对应的列索引,只要某列在indices中出现过,就说明该列存在非零值。通过np.unique()去重并排序,就能得到有序的非全零列索引列表,整个过程无需遍历所有列,内存效率极高,适合处理大型稀疏矩阵。

内容的提问来源于stack exchange,提问作者zell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 05:35:30