numpy的部分简单了解@TOC
NumPy支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
创建一个数组
1.np.array( )
#可以将数组或列表转换为ndarry
2.np.random.randint(start,stop,step) #随机创建一个[start,stop]间距为step的数组
3.np.random.standard_normal(size=(3,4,2)) #生成三个 4*2矩阵,元素取值于正态分布
4. 一些特殊矩阵
np.zero((n,m)) np.ones((n,m))
生成全0 | 1 的n*m矩阵
np.diag([a,b,c,d]) #生成对角阵
测试矩阵是否足够接近
np.allclose(A, B,atol | rtol)
比较AB矩阵每个元素是否符合后面所设绝对误差 atol = ‘ ‘ 相对误差rtol = ’ ‘
#默认在1e-05
如果有满足条件的元素则返回Ture
np.isclose(A, B,atol | rtol)
与上一致,但返回的是每一个元素的比较结果,一个含ture和false的列表
绝对误差和相对误差的区别
绝对误差是对应元素相减值
相对误差是 x1/x2 - 1 的值
增加,修改数组元素
np.append(A,[a,b,c]) 在矩阵后追加一个或多个元素 #生成新数组,原保留
np对象 A
A[index] = a #修改A的第 index元素为a ,原数组改变
A[1: , 2:] = [[1,2],[2,3]] #将行大于1 列大于2的 部分改为 (12)(23)
切片
A[start,stop,step]
A[::-1] 反序
矩阵运算
加减乘除 + - * /
整除 // 余数 %
幂运算 2* *A #2的A每元素次方 A**2 #A的每元素平方
查看矩阵信息
A.size #矩阵元素数
A.shape #矩阵行列
x.nonzero()) # 非0元素下标,分别返回行下标和列下标
x.diagonal() # 对角线元素
x.argmax(axis=1) # 横向最大值的下标 0则纵向
x.max(axis=1) # 横向最大值
x.sum() # 所有元素之和
x.mean() # 所有元素平均值
修改矩阵形式
A.shape = n,m #不能改变原有元素个数,改变原矩阵
A.resize = ((n,m)) #会自动补0 ,生成新的矩阵,原矩阵不变
np.where(x<5, 0, 1) # 小于5的元素值对应0,其他对应1
np.piecewise(x, [x<4, x>7], [lambda x:x2, lambda x:x3]) # 小于4的元素乘以2,大于7的元素乘以3,其他元素变为0
计算两矩阵关系
相关系数 np.corrcoef 正值 正相关 变化趋势一致 负相关相反
特征向量与特征值
np.linalg.eig(A) = e,v 返回两个给e,v。分别是特征值和特征向量
转置 A.T 求逆 np.linalg.inv(x) 求逆
np.linalg.solve(A,x) 求解特征方程