首页 > 编程知识 正文

numpy 数学函数,numpy最小值

时间:2023-05-03 11:29:10 阅读:266278 作者:3487

最近在看机器学习,主要参考书是端庄的水杯博士的统计学习,突然间接触到一个新领域(名词,算法,高维度,概率论),个人感觉难度挺大的。定个小目标,每天学习一点点,争取年前看完统计学习和激动的春天视频,尽量把算法都实现一下。
没有装anaconda的同学建议装一个,里面有各种常用安装包,也可以在pycharm中使用,不用再去下载python的相关版本了,在cmd命令窗口输入jupyter notebook命令可以直接打开。new一下就可以得到一个cell,可以输入程序同时按下shift,enter运行程序了。

numpy包

numpy包主要是实现对矩阵的高效操作(目前为止个人的浅薄理解),相对传统的for循环,np.dot(a,b)能够缩小运行时间。看例子:

import numpy as npimport timea=np.random.rand(100000)#生成n*1矩阵b=np.random.rand(100000)tic=time.time()c=np.dot(a,b)#向量化计算toc=time.time()print("vectorization version"+str(1000*(toc-tic))+"ms")#非向量化,传统for循环c=0tic=time.time()for i in range(100000): c=a[i]*b[i]toc=time.time()print("for version"+str(1000*(toc-tic))+"ms")控制台输出:vectorization version0.9999275207519531msfor version40.02952575683594ms

.dot(a,b)函数对于两个一维数组计算的是内积,而如果参数是两个矩阵(i,j>2)则输出的是两个矩阵的。若想计算1*n矩阵A,A.T(A的转置)和A 的乘积,要命名成np.arrary([[1,2,3]])这样,感觉在numpy中把数组没有当矩阵对待。

import numpy as npa=np.array([1,2,3,4])#一维数组b=np.array([5,6,1,1])c=np.dot(a,b)print(c)a=np.array([[1,2],#矩阵 [3,4]])b=np.array([[5,6,7], [1,1,6]])c=np.dot(a,b)print(c)控制台:24[[ 7 8 19] [19 22 45]] 求和函数.sum()

在矩阵中可以用.sum(axis=0或1)函数,当参数为axis=0是对矩阵每一列求和,当axis=1对每一行求和。

import numpy as npA=np.array([[56.0,0.0,4.4,68.0], [1.2,104.0,52.0,8.0], [1.8,135.0,99.0,0.9]])print(A)cal1=A.sum(axis=0)#axis=0表示希望在竖直方向求和,axis=1表示希望在水平方向求和,cal2=A.sum(axis=1)print(cal1)print(cal2)控制台:[[ 56. 0. 4.4 68. ] [ 1.2 104. 52. 8. ] [ 1.8 135. 99. 0.9]][ 59. 239. 155.4 76.9][ 128.4 165.2 236.7] reshape()函数,用来对矩阵进行变形。 import numpy as npa=np.array([[1,2,3,4], [5,6,7,8]])print(a)b=a.reshape(1,8)c=a.reshape(4,2)print(b)print(c)控制台:[[1 2 3 4] [5 6 7 8]][[1 2 3 4 5 6 7 8]][[1 2] [3 4] [5 6] [7 8]] .shape,用于求矩阵多少行到少列.没有参数返回矩阵的行列,shape[0]返回矩阵的行,shape[1]返回矩阵的列.函数eye(n)用于构造一个单位矩阵。 import numpy as npa=np.array([[1,2,3,4], [5,6,7,8]])b=a.shapeprint(b)c=a.shape[0]d=a.shape[1]print(c)print(d)m=eye(3)print(m)控制台:(2, 4)24[[ 1. 0. 0.] [ 0. 1. 0.] [ 0. 0. 1.]] argsort()函数,对一个列表进行排序,注意:返回的数值是从小到大的下标。 a=np.array([4,2,5,3])b=argsort(a)print(b)控制台:[1 3 0 2] python中对矩阵和常数进行加减乘除,比较灵活。小心出错哟。 a=np.array([[4,2,5,3], [1,8,6,9]])b=a+100#常数100自动转化为2*4的矩阵print(a)print(b)控制台输出:[[4 2 5 3] [1 8 6 9]][[104 102 105 103] [101 108 106 109]]

好了,今天就写这么多了,记录一下今天学习的东西。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。