用Python将主对角线随机赋值,并转为稀疏矩阵存储方式存储。
代码import numpy as np
a = np.eye(50 + 100)
#获取主对角线元素的索引
row, col = np.diag_indices_from(a)
nums = np.random.randn(150)
a[row,col] = nums
print(a)
# a[row, col] = [3, 3, 3]
diag_mat = sp.dok_matrix((50 + 100, 50 + 100), dtype=np.float32)
diag_mat = diag_mat.tolil()
for i in range(150):
diag_mat[i,i] = nums[i]
#
diag_mat = diag_mat.todok()
print(diag_mat)
结果:
[[-0.49376021 0. 0. ... 0. 0. 0. ] [ 0. -0.96180703 0. ... 0. 0. 0. ] [ 0. 0. 0.48238295 ... 0. 0. 0. ] ... [ 0. 0. 0. ... 1.23528678 0. 0. ] [ 0. 0. 0. ... 0. -0.13151499 0. ] [ 0. 0. 0. ... 0. 0. -0.36365596]] (0, 0) -0.4937602 (1, 1) -0.961807 (2, 2) 0.48238295 (3, 3) -0.30496156 (4, 4) -1.286084 (5, 5) 0.07340599 (6, 6) 0.22211555 (7, 7) 1.2685962 (8, 8) 1.6865137 (9, 9) 1.5651793 (10, 10) -0.2147652 (11, 11) -1.5041517 (12, 12) 0.6453798 (13, 13) -1.8234185 (14, 14) 0.78001535 (15, 15) -1.9518493 (16, 16) 0.4825181 (17, 17) -0.20399472 (18, 18) -1.0064268 (19, 19) -0.21058628 (20, 20) -0.3707919 (21, 21) -0.5469619 (22, 22) -0.017009983 (23, 23) -0.21762404 (24, 24) -0.3296507 : : (125, 125) 0.13379188 (126, 126) -0.1629743 (127, 127) 0.7297306 (128, 128) -0.39907572 (129, 129) 0.15937302 (130, 130) -0.96086323 (131, 131) -0.4023909 (132, 132) -0.96251607 (133, 133) -1.0399616 (134, 134) -0.56568336 (135, 135) -0.048772946 (136, 136) 0.03985741 (137, 137) -2.0433953 (138, 138) -0.92559654 (139, 139) 0.0040378957 (140, 140) -0.23906757 (141, 141) -0.1641567 (142, 142) -0.2031665 (143, 143) -1.0103549 (144, 144) -1.1027819 (145, 145) -0.51666343 (146, 146) 0.18575223 (147, 147) 1.2352868 (148, 148) -0.13151498 (149, 149) -0.36365595



