如何不转密集数组,将1x40 CSR矩阵追加到9x15426 CSR矩阵每行后?
无需转换为密集数组实现CSR稀疏矩阵的横向维度追加
完全可以在不转换为密集数组的前提下实现需求,利用Scipy稀疏矩阵的原生操作即可完成,步骤如下:
第一步:复制小矩阵到对应行数
把1x40的CSR矩阵重复9次,生成一个9x40的CSR矩阵,保证其行数与第二个矩阵(9行)一致。使用repeat方法直接操作稀疏矩阵结构,不会触发密集数组转换:mat1_repeated = mat1.repeat(9, axis=0)第二步:横向拼接两个稀疏矩阵
使用hstack方法将9x15426的矩阵和刚生成的9x40矩阵横向拼接,指定输出格式为CSR:from scipy.sparse import hstack result = hstack([mat2, mat1_repeated], format='csr')
关键说明
- 整个过程仅操作CSR矩阵的内部存储结构(
indptr、indices、data数组),完全避开密集数组转换,适合处理大规模稀疏数据。 - 拼接后的矩阵会自动统一数据类型为
numpy.int64,与你预期的结果属性一致。
内容的提问来源于stack exchange,提问作者Blue482
相关产品推荐
相关产品推荐

