python教程分享python生成单位阵或对角阵的三种方式小结

python生成单位阵或对角阵

前提:

import numpy as np

1.identity

np.identity(4)  array([[ 1., 0., 0., 0.],         [ 0., 1., 0., 0.],         [ 0., 0., 1., 0.],         [ 0., 0., 0., 1.]])  

2.eye

np.eye(4)  array([[1., 0., 0., 0.],         [0., 1., 0., 0.],         [0., 0., 1., 0.],         [0., 0., 0., 1.]])  

3.diag(可以指定对角元素)

np.diag([1] * 4)  out[1]:   array([[1, 0, 0, 0],         [0, 1, 0, 0],         [0, 0, 1, 0],         [0, 0, 0, 1]])  np.diag([2] * 4)  out[2]:   array([[2, 0, 0, 0],         [0, 2, 0, 0],         [0, 0, 2, 0],         [0, 0, 0, 2]])

有趣的地方是前两种方法元素都是浮点数,最后一种是整数,使用的时候注意区分就好

python创建对角阵的np.eye()函数

最近博主在研究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.]]  

动动小手,感悟一下就好啦!以上为个人经验,希望能给大家一个参考,也希望大家多多支持<猴子技术宅>。

需要了解更多python教程分享python生成单位阵或对角阵的三种方式小结,都可以关注python教程分享栏目—猴子技术宅(www.ssfiction.com)

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/pythons/1092016.html

(0)
上一篇 3天前
下一篇 3天前

精彩推荐

发表评论

您的电子邮箱地址不会被公开。