<利用python进行数据分析>笔记 4.5~4.8

  今年项目很多,人手又不够,市场销售又不时催新功能,每个人手上都赶着几个项目的任务。领导说你们要抓紧呀,要提需求呀,我想说的是,提加班给加班费能行吗?

4.5 线性代数

dot 函数是矩阵的点乘积,就是有两个合适的矩阵 a和b,a的第n行每一个元素乘b的n列的每一个元素,积的和作为结果矩阵的一个元素

比如 a = [[1,2],

    [3,4]]

  b = [[1,1],

    [2,2]]

  c =a.dot(b)

       c = [[5,5].

    [11,11]]

也可以 a@b

numpy.linalg 里有inv 函数就是求矩阵的逆矩阵

你矩阵就是 如果 a@b = b@a = E,存在E的话,那么a和b互为逆矩阵(这个好像是大学线性代数的知识,基本忘光了,好像那时候考的还不错的呀)

b = inv(a),如果不报错,就说明存在b作为a的逆矩阵

inv函数求出的值,可能是精度很高的浮点数:

a
Out[137]: 
array([[1, 2],
       [3, 4]])

b = inv(a)

b[0][0]
Out[139]: -1.9999999999999998

理论上 a@b == b@a,运算一下

a@b
Out[140]: 
array([[1.00000000e+00, 1.11022302e-16],
       [0.00000000e+00, 1.00000000e+00]])

b@a
Out[141]: 
array([[1.0000000e+00, 4.4408921e-16],
       [0.0000000e+00, 1.0000000e+00]])

结果来看,精确到小数点后面时,是不一样的,所以inv求出来的应该是近似值

4.6 伪随机数生成

npmpy.random 模块,可以设置局部的随机数种子 np.random.RandomState(),全局的是np.random.seed()

np.random.normal(size=(n,k)),生成n*k的正太分布样本数组

4.7 随机漫步

用 np.random.randint(n,k,size=number) 可以生成一个number大小的 n~k之间的数组

原文地址:https://www.cnblogs.com/yemeng/p/14579570.html