python - 访问稀疏 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 矩阵具有indicies
和indptr
属性,请参见下面的示例,该示例使用这些属性将矩阵转换为列表:
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
推荐阅读
- c# - 将流读取到分隔符的最佳方法
- c++ - 通过 C++ 中的 unsigned char* 函数参数传递和接收原始字节数据
- node.js - 如何限制 NodeJS 中 WriteStream 缓冲区的大小?
- excel - 在最后一行的范围定义中出现错误
- postgresql - 用户“db_user”的对等身份验证失败
- kubernetes - Kubernetes 中 CRD 的动态键/值输入属性
- visual-studio - 访问 hololens 上的 .pfx 文件
- github - Jekyll github 网站 - 帖子未构建
- sql - 如何使用 LIKE 运算符?
- python - 如何在另一个类中使用一个类中的变量