Skip to main content
 首页 » 编程设计

python之创建包含对角确定值的单位矩阵

2025年05月04日15lovecherry

本质上,我正在寻找一段高效的代码来生成以下矩阵:

[[1 2 3 4 5] 
 [2 3 4 5 6] 
 [3 4 5 6 7] 
 [4 5 6 7 8] 
 [5 6 7 8 9]] 

我想出了以下方法,它有效,但它不是特别漂亮,我想可能有一种方法可以真正利用 numpy 为此(除了创建矩阵和 pretty-print 它):

import copy 
import numpy as np 
 
identity_count = 5 
priority_matrix = np.identity(identity_count, dtype=int) 
 
rating_start = 1 
maximum_rating = identity_count * 2 
rating_range = range(rating_start, maximum_rating) 
 
priority_copy = copy.copy(priority_matrix) 
 
for row_idx, row in enumerate(priority_copy): 
    rating_pos = 0 
    for col_idx, item in enumerate(row): 
        priority_matrix[row_idx][col_idx] = rating_range[rating_pos] 
        rating_pos += 1 
    rating_start += 1 
    rating_range = range(rating_start, maximum_rating) 
 
print(np.matrix(priority_matrix)) 

必须有一种更有效的方法来做到这一点(不需要使用 numpy)。

谢谢!

请您参考如下方法:

您显然在描述一种类型 Hankel matrix .

>>> from scipy.linalg import hankel 
>>> hankel(c=range(1,6), r=range(5,10)) 
array([[1, 2, 3, 4, 5], 
       [2, 3, 4, 5, 6], 
       [3, 4, 5, 6, 7], 
       [4, 5, 6, 7, 8], 
       [5, 6, 7, 8, 9]]) 

Hankel 矩阵具有常数反对角线。参数 c 和 r 分别指定第一列和最后一行。