1.Numpy的ndarry
#载入numpy
import numpy as np
定义ndarry
a=np.array([1,2,3,4])
b=np.array([[1,2,3],[3,2,1]])
c=np.array([[1,2.5,3.14],[13.1,2.6,1.2]])
d=np.array([[1,2,3,4]])
#一些查看命令
b.shape #几×几
b.size #几个数
b.ndim #查看维度
2.Numpy的使用
#向量生成
np.arange(10)
np.linspace(0,10,20) #范围,个数
#矩阵生成
temp=np.zeros((5,5)) #全一矩阵
temp=np.ones((5,5)) #全零矩阵
#uniform distribution between 0 and 1 #随机输入矩阵
temp=np.random.rand(5,5)
#Gaussian distribution with mean 0 and variance 1
#高斯 平均值为0 方差为1
temp=np.random.randn(5,5)
#随机生成N个比a大,比b小的数
temp.np.random.randint(a,b,n)
3.矩阵
①矩阵的运算及拼接
#矩阵运算
a+1
b+1
np.dot(a,b) #乘
a.T #转置
#矩阵的拼接
np.vstack([a,b]) #垂直
np.hstack([a,b]) #水平
np.concatenate((a,b),axis=0) #垂直
np.concatenate((a,b),axic=1) #水平
np.c_[xx.ravel(), yy.ravel()] #np.c_水平连接两个矩阵,要求行数相等。
np.r_[xx.ravel(), yy.ravel()] #np.r_垂直连接两个矩阵,要求列数相等。
#矩形形变
np.reshape(2,2)
#多维数组降为一维
np.flatten() #返回一份拷贝,对拷贝所做修改不会影响原始矩阵
np.ravel() #返回的是视图,修改时会影响原始矩阵
②向量和矩阵索引
#向量索引
print(a[0])
print(a[0:3]) #0号开始,取3-0=3位
print(a[1:3]) #1号开始,取3-1=2位
print(a[3:]) #3号开始,取后面所有
print(a[:3]) #3号之前所有
print(a[1:-1]) #1号开始到最后一个前一位
#矩阵索引
print(b[2,0]) #第二行第1列
print(b[2][0])
print(b[3]) #第三行
print(b[3,:]) #第三行
print(b[:,0]) #第一列
③Numpy常用科学计算
np.log(a)
np.exp(a) #e
np.min(a)
np.max(a)
np.mean(a) #平均值
np.median(a) #中值
np.ptp(a) #最大值与最小值的差
np.std(a) #标准差
np.var(a) #方差
np.sum(a) #求和
np.sin(a)
np.abs(a) #绝对值
np.argmax(a) #返回最大值的索引
np.argmin(a) #返回最小值的索引
np.max(b,0) #求列的绝对值(0表示列,1表示行)
4.习题
①创建一个10*10的ndarry对象,且矩阵边界全为1,里面全为0
②创建一个5x3随机矩阵和一个3x2随机矩阵,求矩阵积以及其最大值,最小值,平均值和标准差
③ 如果y=10,求解x,(用数值法求解)
- 第一题
import numpy as np
a=np.zeros((8,8))
b=np.ones((1,8))
c=np.concatenate((a,b),axis=0)
d=np.concatenate((b,c),axis=0)
e=np.ones((10,1))
f=np.concatenate((d,e),axis=1)
g=np.concatenate((e,f),axis=1)
或
m=np.ones((10,10))
m[1:9,1:9]=0
- 第二题
temp1=np.random.rand(5,3)
temp2=np.random.rand(3,2)
temp3=np.dot(temp1,temp2)
print(np.max(temp3))
print(np.min(temp3))
print(np.mean(temp3))
print(np.std(temp3))
- 第三题
x=np.linspace(0,10,1000)
y=x**np.exp(x/3)
diff=np.abs(y-10)
print(np.argmin(diff))
print(x[np.argmin(diff)])
print(2.6126126126126126**np.exp(2.6126126126126126/3))