'''
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
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.]
'''
函数备忘: