如何形成矩阵单位?

2 投票
2 回答
2507 浏览
提问于 2025-04-18 05:44

我想要做的是生成一个大小为 n x n 的矩阵。不管这个矩阵是什么样的,我都需要把数字 1 填充从左上角到右下角,其他地方都填 0

def identity(m):
    new_identity = []
    old_identity = m
        for i in range(len(old_identity)):
            new_identity.append(old_list[1])
    return new_identity

比如说,如果矩阵的大小是 3,那么期望的结果就是:

[[1, 0, 0], [0, 1, 0], [0, 0, 1]]

为了更容易理解,可以这样想:

[[1, 0, 0],

 [0, 1, 0],

 [0, 0, 1]]

2 个回答

2

这个方法可能不是最符合Python风格的,但它比其他解决方案要快。

def identity(m):
    result = []
    for i in range(m):
        row = [0]*m
        row[i] = 1
        result.append(row)
    return result

在我的电脑上,对于一个500x500的矩阵,我的函数执行需要3.13毫秒,而使用Python列表推导的方案(需要进行m²次比较)则需要47.48毫秒才能完成。

当然,如果你使用的是Python 2.x,应该用xrange代替range

7

这里的 n 是你想要创建的单位矩阵的大小。

def identity(n):
    return [[1 if i==j else 0 for j in range(n)] for i in range(n)]

撰写回答