【问题标题】:Printing complete coo_matrix打印完整的 coo_matrix
【发布时间】:2016-05-27 06:05:49
【问题描述】:

我尝试使用另一个矩阵实例化 coo_matrix。当我尝试打印coo_matrix 时,输出为:

(1, 9)  1.0
(1, 10) 1.0
(1, 11) 1.0
(1, 25) 1.0
(1, 47) 1.0
(2, 1)  1.0
(2, 7)  1.0
(2, 11) 3.0
(2, 12) 1.0
(2, 13) 1.0
(2, 15) 2.0
(2, 19) 1.0
(2, 42) 1.0
(3, 0)  1.0
(4, 20) 1.0
(4, 22) 1.0
(4, 24) 1.0
:   :
(45, 0) 1.0
(45, 7) 1.0
(45, 14)    2.0
(45, 20)    1.0
(45, 26)    1.0
(45, 38)    1.0
(45, 40)    1.0
(46, 11)    1.0
(46, 19)    1.0
(46, 36)    1.0
(46, 41)    1.0
(46, 47)    1.0

如何打印完整的coo_matrix?我尝试使用set_printoptions(threshold = 'nan'),但它不起作用。

【问题讨论】:

  • 在这种情况下,“完成”是什么意思?
  • 您想查看所有非零值还是包括 0 在内的整个矩阵?通常稀疏矩阵太大而无法完整显示,这就是为什么它有 2 个不同的缩写显示(repr(a)str(a))。要查看 0,您必须再次使其稠密。
  • 我想查看唯一的非零值。
  • print(matrix.data) 会将非零元素的值打印为一维数组。这就是你想要的吗?
  • @BhuvanReddy:您只想查看非零值。您只看到非零值。有什么问题?

标签: python python-2.7 numpy scipy sparse-matrix


【解决方案1】:

您可以使用.todense() 方法将稀疏矩阵转换为密集矩阵:

print(my_coo_matrix.todense())

编辑:您的问题听起来像是您也想打印零值元素,但是如果您只想打印非零元素,您可以手动迭代矩阵:

for row, col, value in zip(my_coo_matrix.row, my_coo_matrix.col, my_coo_matrix.data):
    print "({0}, {1}) {2}".format(row, col, value)

【讨论】:

  • 这有帮助!谢谢!
【解决方案2】:

我发现使用 spy() 直观地表示它很有帮助。

spy(coo_matrix)

【讨论】:

    【解决方案3】:

    (对于非常大的 coo_matrix)导出到 csv,然后将其保存为 xlsx 可能会有所帮助。

    例子:

    import numpy
    numpy.savetxt('coo_matrix.csv', coo_matrix.todense(), delimiter = ',') 
    

    【讨论】:

      猜你喜欢
      • 2013-12-31
      • 2022-06-21
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-21
      • 2018-02-28
      • 2020-01-28
      相关资源
      最近更新 更多