微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python 数学建模算法与应用笔记

35页

对于范数的理解

一、norm(x,ord = None,axis=None,keepdims=Flase)

注意:范数是对向量(或者矩阵)的度量,是一个标量(scalar)

 参考资料:

https://www.jianshu.com/p/343618e8e455

二、np.round(数据, 保留的小数位数)
1.当小数部分是0.5时,对于浮点型数据,四舍六入,5凑偶。

2.与我们理解的四舍五入不同,numpy的round函数采用的是误差理论方法:当整数部分是偶数,小数部分是0.5时,向下取整;当整数部分是奇数,小数部分是0.5时,则向上取整。即,当小数部分是0.5的时候,“去奇存偶”,这样得到的结果在统计学上更精确。

import numpy  as np
print(np.round(4.5,0)) #4.0
print(np.round(5.5,0)) #6.0

三、对例2.34的理解

np.linalg.inv():矩阵求逆,这个函数一个求解方阵的逆矩阵的函数,但不适用于不可逆的方阵。

import numpy as np
from numpy.linalg import inv
a = np.array([[1., 2.], [3., 4.]])
b = inv(a)
print(b)

输出: [[-2.   1. ]
 [ 1.5 -0.5]]

可以一次性求多个矩阵的逆

import numpy as np
from numpy.linalg import inv
b = np.array([[[1., 2.], [3., 4.]], [[1, 3], [3, 5]]])
c = inv(b)
print(c)

输出

[[[-2.    1.  ]
  [ 1.5  -0.5 ]]

 [[-1.25  0.75]
  [ 0.75 -0.25]]]

numpy.linalg有关详细信息,请参阅numpy.linalg文档

关于第一种方法

为什么采用逆矩阵乘于常数项得答案

可参考:花了10分钟,终于明白矩阵的逆到底有什么用

关于第二种方法

numpy.linalg.solve(a, b)
矩阵形式解一个线性矩阵方程,或线性标量方程组

参数

参数 数据类型 意义 a (…, M, M) array_like 系数矩阵 b {(…, M,), (…, M, K)}, array_like 纵坐标或因变量的值

返回

返回 数据类型 意义 x {(…, M,), (…, M, K)} ndarray 方程组ax=b的解,shape与b一样

例2.35 

Python numpy.linalg.pinv用法及代码示例

例2.36 

numpy.eye(N,M=Nonek=0dtype=<type 'float'>,order='C’)

重点关注第一个和第三个参数

参数
参数 介绍
N 输出方阵(行数=列数)的规模
M int型,可选项,输出的列数,如果没有就认为N
K

认情况下输出的是对角线全“1”,其余全“0”的方阵,

如果k为正整数,则在右上方第k条对角线全“1”其余全“0”;

k为负整数则在左下方第k条对角线全“1”其余全“0”。

dtype 可选项(int,float),返回的数据的数据类型
order {‘C’,‘F'},可选项,也就是输出的数组的形式是按照C语言的行优先’C',还是按照Fortran形式的列优先‘F'存储在内存中

import numpy as np
print(np.eye(2, dtype=float))

输出

[[1. 0.]
 [0. 1.]]
import numpy as np
print(np.eye(3, k=1))

 输出

[[0. 1. 0.]
 [0. 0. 1.]
 [0. 0. 0.]]

np.rot90(array, k)

语法:旋转矩阵,也可用来旋转图像

参数 介绍

array

待旋转的矩阵
k 旋转角度为90°xk(认为1),当k为正数时,表示逆时针旋转90度xk,k取负数时,顺时针旋转
import numpy as np
a = np.eye(4)
b = np.rot90(a)
print(a)
print('--'*20)
print(b)

输出

[[1. 0. 0. 0.]
 [0. 1. 0. 0.]
 [0. 0. 1. 0.]
 [0. 0. 0. 1.]]
----------------------------------------
[[0. 0. 0. 1.]
 [0. 0. 1. 0.]
 [0. 1. 0. 0.]
 [1. 0. 0. 0.]]

w,v = numpy.linalg.eig(a)  计算方形矩阵a的特征值和右特征向量

参数a : 待求特征值和右的方阵

返回:

w 多个特征值组成的一个矢量。注意:多个特征值并没有按特定的次序排列。特征值中可能包含复数。当 a 为实数时,得到的特征值将是实数(0 虚部)或以共轭对形式出现
v 多个特征向量组成的一个矩阵。每一个特征向量都被归一化了。第i列的特征向量v[:,i]对应第i个特征值w[i]
import numpy as np
a = np.eye(4)
b = np.rot90(a)
c,d = np.linalg.eig(b)
print('特征值为',c)
print('特征向量为:\n',d)
特征值为 [ 1. -1.  1. -1.]
特征向量为:
 [[ 0.70710678  0.70710678  0.          0.        ]
 [ 0.          0.          0.70710678 -0.70710678]
 [ 0.          0.          0.70710678  0.70710678]
 [ 0.70710678 -0.70710678 -0.          0.        ]]

numpy.liangly.eig()的参考文献:https://github.com/numpy/numpy/blob/v1.19.0/numpy/linalg/linalg.py#L1188-L1334

原文地址:https://www.jb51.cc/wenti/3281095.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐