import matplotlib.pyplot as plt #导入库
cat = plt.imread('cat.jpg') #导图片
type(cat) #查看变量类型
plt.imshow(cat)
np._version__ #查看np的版本
arr = np.arange(15).reshape((3,5)) #重新给数组'变形'
arr = np.random.randn(6,3) #生成随机6行矩阵
arr.swapaxes(1,2) #
将数组以二进制格式保存到磁盘
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') #加载.npz文件,得到一个类似字典的对象
arch['b']
存储文本文件
arr1 = np.loadtxt('array_ex.txt',delimiter =',') # 加载至一个二维数组
arr2 = np.savetxt #将数组写到以某种分隔符隔开的文本文件中
genfromtxt 、loadtxt #面向结构化数组和缺失数据的处理
线性代数
x.dot(y) # 相当于np.dot(x,y) # x矩阵乘以y矩阵
接下来,numpy.linalg有一组标准的矩阵分解运算以及诸如求逆和行列式之类的
from numpy.linalg import inv,qr #导库
mat = x.Tdot(x) #转置再相乘
inv(mat) #求逆
mat.dot(inv(mat))
q , r = qr(mat) # 矩阵分解
随机数生成
生成一个样本值
samples = np.random.normal(size = (4,4)) #标准正态分布矩阵
#计算时间
from random import normalvariate
N = 1000000
%timeit samples = [normalvariate(0,1) for i in range(N) ]
%timeit np.random.normal(size = N)
#一次生成多个样本值的函数(范例3)
范例1:随机漫步
import random
position = 0
walk = [position]
steps = 1000
for i in range(steps):
step = 1 if random.randint(0,1) else -1
position += step
walk.append(position)
import matplotlib.pyplot as plt #导画图的包
plt.plot(walk)
范例2:随机产生1000“掷硬币”结果(即两个数中任选一个,将其分别设置为1或-1,然后计算累计和)
nsteps = 1000
draws = np.random.randint(0,2,size = nsteps) #随机生成0和1
steps = np.where(draws > 0,1,-1) # 大于0设为1,否则设为-1
walk = steps.cumsum() 计算累计和
walk
范例3:一次模拟多个随机漫步
nwalks = 5000
nsteps = 1000
draws = np.random.randint(0,2,size = (nwalks,nsteps)) #生成5000*1000的随机数
steps = np.where(draws>0,1,-1) #大于0设定为1,否则设定为-1
walks = steps.cumsum(axis = 1) #在行方向上求累计和