1 numpy数组进行文件输入和输出
numpy在硬盘中将数据以文本或二进制文件的形式存入硬盘或由硬盘载入
np.save和np.load是高效存取硬盘数据的函数
arr = np.arange(10) np.save('some_array', arr) #将数组数据存储,文件会加后缀 .npy np.load('some_array.npy') #将数组的输出 np.savez('array_archive.npz', a=arr, b=arr) #将要存储的数组,作为参数传入,保存 arch = np.load('array_archive.npz') #将数组的输出 arch['b'] #读取具体数组 np.savez_compressed('arrays_compressed.npz', a=arr, b=arr) #将要存储的数组,作为参数传入,并压缩保存
2 线性代数
线性代数,如矩阵乘法、分解、行列式等方阵数学
2.1 常用的numpy.linalg函数:
diag 将一个方法的对角(或非对角)元素作为一维数组返回,或将一维数组转成一个方阵,并且在非对角线上有零点
dot 矩阵点乘积
trace 计算对角元素和
det 计算矩阵的行列式
eig 计算方阵的特征值和特征向量
inv 计算方阵的逆矩阵
pinv 计算矩阵的Moore-Penrose 伪逆
qr 计算QR分解
svd 计算奇异值分解
solve 求解x的线性系统Ax=b,其中A是方阵
lstsq 计算Ax=b的最小乘积
2.2 x.dot(y) 详解:
x为
[[1, 2, 3],
[4, 5, 6]]
y为
[ [1, 2],
[3, 4],
[5, 6]]
x 的每行 乘以每一列,每一次乘积各个对应值之和,为其中行的一个结果值
如 x的第一行[1,2,3]乘以 y的第一列[1,3,5] 为第一行的第一个值;乘以y的第二列[2,4,6] 为第二个值
1*1+2*3+3*5=22
1*2+2*4+3*6=28
x的第二行[4, 5, 6]乘以 y的第一列[1,3,5] 为第二行的第一个值;乘以y的第二列[2,4,6] 为第二个值
4*1+5*3+6*5=49
4*2+5*4+6*6=64
2.3 数组线性计算实例
x = np.array([[1., 2., 3.], [4., 5., 6.]]) y = np.array([[6., 23.], [-1, 7], [8, 9]]) x y x.dot(y) 相当于 np.dot(x, y) np.dot(x, np.ones(3)) #二维数组和一个长度合适的一维数组间的乘积,结果是一维数组 相当于 x @ np.ones(3)
from numpy.linalg import inv, qr #拥有矩阵分解的标准函数集及常用函数,如求逆和行列式求解 X = np.random.randn(5, 5) mat = X.T.dot(X) #计算的是X和它的转置矩阵X.T的点乘积 inv(mat) #计算方阵的逆矩阵 mat.dot(inv(mat)) q, r = qr(mat) #计算qr分解 r
本篇知识点参考《利用python进行数据分析》,更多知识请阅读原书