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文档
关于第一种方法
为什么采用逆矩阵乘于常数项得答案
关于第二种方法
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=None, k=0, dtype=<type 'float'>,order='C’)
重点关注第一个和第三个参数
参数 | 介绍 |
N | 输出方阵(行数=列数)的规模 |
M | int型,可选项,输出的列数,如果没有就默认为N |
K | 如果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