Chapter4-4 用于数组的文件输入和输出 Chapter4-5 线性代数

'''
Chapter4-4 用于数组的文件输入和输出
Chapter4-5 线性代数

索引:
1.将数据以二进制形式保存到磁盘(默认是无压缩的)
    np.save(filename,data)将data保存为二进制filename.npy
    np.savez(filename,a=arr1,b=arr2)存为压缩文件filename.npz
    np.load(filemname)读取filename(对npz文件和npy文件的读取结果结构不同)
2.存取文本文件#只讲简单的内容,更多时候用到的是pandas(下一章的内容)
3.x.dot(y)==np.dot(x,y)(数学意义上的矩阵相乘)
4.numpy.linalg中有些矩阵分解运算的方法,如求逆,求行列式等
5.常用函数列表



Created on 2016年12月19日

@author: Bigboy

'''

实践内容:

#-*- coding:utf-8-*-
import numpy as np


#1----------------------------------------------------------------------------
arr = np.arange(10)
np.save('d:/arrdata', arr)

#可以指定路径,默认是当前工作路径,就是当前模块的存储的路径
#保存时结尾会加上.npy,是二进制文件
data = np.load('arrdata.npy')#读出放在数组中
print data
'''
out:
[0 1 2 3 4 5 6 7 8 9]
'''
arr1 = np.arange(10,20)
np.savez('dataz',a=arr,b=arr1)
#这里数据存储在压缩文件datax.npz中,
#参数a b 的意思是把名为arr和arr1的两个数组存在dataz.npz中
arch = np.load('dataz.npz')
#arch存的是读到的dataz的所有信息,但是类似于字典的结构
#可用如下方式访问
print arch['a']
print arch['b']
'''
out:
[0 1 2 3 4 5 6 7 8 9]

[10 11 12 13 14 15 16 17 18 19]
'''


#2-------------------------------------------------------------------------------

arr = np.loadtxt('test.txt',delimiter=',')
print arr 
'''
out:
[[ 0.580052  0.18673   1.040717  1.134411]
 [ 0.194163 -0.636917 -0.938659  0.124094]
 [-0.12641   0.268607 -0.695724  0.047428]
 [-1.484413  0.004176 -0.744203  0.005487]
 [ 2.302869  0.200131  1.670238 -1.88109 ]
 [-0.19323   1.047233  0.482803  0.960334]]

'''

#3--------------------------------------------------------------------------------
arr1 = np.array([[1,2,3],[4,5,6],[7,8,9]])
arr2 = np.array([[1,1],[1,1],[1,1]])

#print arr1*arr2#对应元素相乘,两个阵的结构必须一样,这里两个矩阵的维度不一样,会报错

print arr1.dot(arr2)#arr1与arr2相乘
print np.dot(arr1,arr2)

#4--------------------------------------------------------------------------------

from numpy.linalg import inv, qr,solve
arr1 = np.random.randn(3,3)

print arr1
#print arr1.T#返回转置后的矩阵,但是arr本身不变
print inv(arr1.T.dot(arr1))#矩阵求逆(保证是方阵)
print qr(arr1)#QR分解得到两个矩阵

'''
out:
[[-0.15596411  0.07390067  0.07783746]
 [ 0.05810221  1.57415662 -0.67944777]
 [ 1.7033188  -1.94571772 -0.51524658]]
 
[[ 4522.54316833  2391.11585043  5931.75577862]
 [ 2391.11585043  1264.36758533  3136.1946318 ]
 [ 5931.75577862  3136.1946318   7781.44037243]]
 
(array([[-0.09113083,  0.05985673,  0.9940384 ],
       [ 0.03394949, -0.99742498,  0.06317305],
       [ 0.99526007,  0.03950411,  0.08886406]]),
array([[ 1.71143086, -1.88978796, -0.54296465],
       [ 0.        , -1.64254353,  0.66200292],
       [ 0.        ,  0.        , -0.01133627]]))
'''

A = [[1,0,0],[0,1,0],[0,0,1]]
B = [1,1,1]
print solve(A,B)
#solve解方程AX=B,接受两参数A和B
#当没有解时可用最小二乘解lstsq()
'''
out:
[ 1.  1.  1.]

'''
函数备忘:











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值