目标是创建一个单位矩阵生成器函数。
def idmatrix(n):
idnmatrix=[]
... #method to add rows and columns with values
return idnmatrix
例如,我是否使用过
def idmatrix(2):
我会得到输出:
id2matrix
这将是:
id2matrix=[[1,0],[0,1]]
这适用于我想使用的任何“n”:
id3matrix, id4matrix, etc...
def idmatrix(size):
matrix = [[0]*size for i in range(size)]
for i in range(size):
matrix[i][i] = 1
return matrix
id1matrix = idmatrix(1)
id2matrix = idmatrix(2)
id3matrix = idmatrix(3)
id4matrix = idmatrix(4)
函数中返回的任何内容都没有变量名。在Python中,变量和它们映射到的对象是独立的。 您只能通过调用函数来手动设置变量名称:
ind2matrix = idmatrix(2)
但是,您可以做的是在函数中创建矩阵及其名称:
def idmatrix(n):
idnmatrix=[]
... #method to add rows and columns with values
return idnmatrix, 'id{}matrix'.format(n)
其中
'id{}matrix'.format(n)
是字符串格式。例如,'id{}matrix'.format(2)
创建字符串 'id2matrix'
。
因此,您的函数现在返回一个
tuple
,其中第一个条目是实际矩阵,第二个条目是它的名称。
此外,为了收集许多名称和矩阵,您可以将它们放入字典中。因此,您就有了从名称到值的映射:
mat_dict = {}
for n in range(10):
matrix, name = idmatrix(n)
mat_dict[name] = matrix
因此
print mat_dict
会打印类似这样的内容(不一定按照这个特定顺序):
{'id3matrix': [[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]],
'id2matrix': [[1.0, 0.0], [0.0, 1.0]],
'id1matrix': [[1.0]],
'id0matrix': [],
... }
如果您想返回具有预期名称的矩阵,您可以使用字典来返回两者,并且您可以使用
numpy
来创建您的单位矩阵:
>>> def idmatrix(n):
... return {'id{}matrix'.format(n):np.matrix(np.identity(n), copy=False)}
...
>>> idmatrix(4)
{'id4matrix': matrix([[ 1., 0., 0., 0.],
[ 0., 1., 0., 0.],
[ 0., 0., 1., 0.],
[ 0., 0., 0., 1.]])}
使用 python,你可以使用嵌套列表理解:
>>> def idmatrix(n):
... return {'id{}matrix'.format(n):[[1 if j==i else 0 for j in range(n)] for i in range(n)]}
...
>>> idmatrix(4)
{'id4matrix': [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]}
使用 Numpy 检查。
import numpy as np
def idmatrix_np(size):
return np.identity(size)
size = 4
identity_matrix = idmatrix_np(size)