(12)numpy基础4:数组进行文件输入或输出及 线性代数等操作

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进行数据分析》,更多知识请阅读原书

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值