微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

访问稀疏 CSR 矩阵中的列

如何解决访问稀疏 CSR 矩阵中的列

在访问稀疏 CSR 矩阵中的最后一列时遇到一些问题。理想情况下,我想将最后一列转换为某种可以用作我的标签集的数组。我的 CSR 矩阵如下所示:

(0,1976)   1
  (0,2916) 1
  (0,3871) 1
  (0,4437) 1
  (0,8202) 1
  (0,9458) 1
  (0,10597)    1
  (1,4801) 1
  (1,6903) 1
  (1,7525) 1
  (2,873)  1
  (2,1017) 1
  (2,1740) 1
  (2,1925) 1
  (3,1976) 1
  (3,5606) 1
  (3,6898) 1

我想访问包含所有“1”的最后一列。有什么办法可以做到这一点吗?

解决方法

CSR 矩阵具有 indiciesindptr 属性,请参见下面的示例,该示例使用这些属性将矩阵转换为列表:

def sparse_to_string_list(matrix: csr_matrix):
    res = []
    indptr = matrix.indptr
    indices = matrix.indices
    for row in range(matrix.shape[0]):
        arr = [k for k in indices[indptr[row]: indptr[row + 1]]]
        arr.sort()
        res.append(' '.join([str(k) for k in arr]))
    return res

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。