簡體   English   中英

如何打印帶有行名的稀疏矩陣和(coo_matrix)?

[英]How to print sparce matrix sum (coo_matrix) with row names?

我有一個像這樣的稀疏矩陣(coo_matrix):

type(matrix)
scipy.sparse.coo.coo_matrix

print(matrix)
  (0, 14)   1.0
  (1, 17)   1.0
  (3, 6)    1.0
  (6, 3)    1.0
  (12, 15)  2.0
  (12, 13)  3.0
  (13, 16)  2.0
  (13, 12)  3.0
  (14, 0)   1.0
  (15, 16)  1.0
  (15, 12)  2.0
  (16, 15)  1.0
  (16, 13)  2.0
  (17, 1)   1.0
  (18, 19)  1.0
  (19, 18)  1.0

我可以對這個矩陣求和,但是打印的結果沒有行名,所以不清楚這個求和屬於哪個元素:

print(matrix.sum(axis = 1))
[[1.]
 [1.]
 [0.]
 [1.]
 [0.]
 [0.]
 [1.]
 [0.]
 [0.]
 [0.]
 [0.]
 [0.]
 [5.]
 [5.]
 [1.]
 [3.]
 [3.]
 [1.]
 [1.]
 [1.]]

是否可以像這樣設置矩陣的行名以打印結果(因此行名將對應於稀疏矩陣元素):

0: 1
1: 1
3: 1
6: 1
12: 5
13: 5
14: 1
15: 3
16: 3
17: 1
18: 1
19: 1

我發現matrix.rowmatrix.col屬性很有用。 不太確定你希望它有多動態,但下面給了我想要的 output。

sums_to_list=sum(matrix.sum(axis = 1).tolist(), [])

for i, j in zip(matrix.row, sums_to_list):
    print(f'{i}: {j}')

zip function 中的sums_to_list變量從提供的求和矩陣中解壓縮列表列表,然后將其轉換為單個列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM