如何形成矩阵单位?
我想要做的是生成一个大小为 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)]