最近博主在研究kalman滤波,里面初始矩阵定义需要对角阵,于是查了一些资料,发现numpy中有一个eye函数可以达到这样的目的
np.eye(N,M=None,k=0,dtype=<class 'float'>,order='C)
N
表示输出的行数;M
表示输出的列数,不给默认等于N;K
默认等于0,表示主对角线,负数代表低对角,正数代表高对角;dtype
表示输出数据的类型;order
表示输出的数组的形式是按照C语言的行优先’C’,还是按照Fortran形式的列优先‘F’存储在内存中。
看下面两个例子就明白用法啦!
a = np.eye(4)
print(type(a))
print(a)
a = np.mat(a)
print(type(a))
print(a)
a = a.I
print(type(a))
print(a)
>>><class 'numpy.ndarray'>
[[1. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 1.]]
<class 'numpy.matrix'>
[[1. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 1.]]
<class 'numpy.matrix'>
[[1. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 1.]]
a = np.eye(4,k=1)
print(type(a))
print(a)
a = np.mat(a)
print(type(a))
print(a)
a = a.T
print(type(a))
print(a)
>>><class 'numpy.ndarray'>
[[0. 1. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 1.]
[0. 0. 0. 0.]]
<class 'numpy.matrix'>
[[0. 1. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 1.]
[0. 0. 0. 0.]]
<class 'numpy.matrix'>
[[0. 0. 0. 0.]
[1. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 1. 0.]]
动动小手,感悟一下就好啦!