作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个按照文档中指定的方式创建的 scipy csr_matrix:
import numpy as np
from scipy.sparse import csr_matrix
row = np.array([0, 0, 1, 2, 2, 2])
col = np.array([0, 2, 2, 0, 1, 2])
data = np.array([1, 2, 3, 4, 5, 6])
mtr = csr_matrix((data, (row, col)))
mtr.toarray()
array([[1, 0, 2],
[0, 0, 3],
[4, 5, 6]])
我如何有效地将这样的矩阵 mtr
转换回最初的三个列表 row
、col
和 data
?
最佳答案
正如您在评论中指出的那样,您可以通过访问 data
属性来获取数据。要获取行和列,您可以将数组转换为 COO 格式,并访问 data
、row
和 col
属性:
这是你的数组mtr
:
In [11]: mtr
Out[11]:
<3x3 sparse matrix of type '<class 'numpy.int64'>'
with 6 stored elements in Compressed Sparse Row format>
In [12]: mtr.A
Out[12]:
array([[1, 0, 2],
[0, 0, 3],
[4, 5, 6]], dtype=int64)
转换为 COO 格式,并访问 data
、row
和 col
属性。
In [13]: c = mtr.tocoo()
In [14]: c.data
Out[14]: array([1, 2, 3, 4, 5, 6], dtype=int64)
In [15]: c.row
Out[15]: array([0, 0, 1, 2, 2, 2], dtype=int32)
In [16]: c.col
Out[16]: array([0, 2, 2, 0, 1, 2], dtype=int32)
关于python - 如何将 scipy csr_matrix 转换回行、列和数据列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47085975/
我做了很多 Project Euler 编码问题,Python 是我的首选语言。许多程序通常需要很长时间才能完成,所以我正在努力实现一些有助于提供有关程序状态的诊断信息的东西:当 KeyboardIn
我是一名优秀的程序员,十分优秀!