这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 扣丁学堂详解Python框架之NumPy常用方法总结

共1条 1/1 1 跳转至

扣丁学堂详解Python框架之NumPy常用方法总结

助工
2020-10-22 14:46:17     打赏

  NumPy是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nestedliststructure)结构要高效的多(该结构也可以用来表示矩阵(matrix))。NumPy(NumericPython)提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。专为进行严格的数字处理而产生。多为很多大型金融公司使用,以及核心的科学计算组织如:LawrenceLivermore,NASA用其处理一些本来使用C++,Fortran或Matlab等所做的任务。

  numpy中的数据类型,ndarray类型,和标准库中的array.array并不一样。


  ndarray的创建


  >>>importnumpyasnp


  >>>a=np.array([2,3,4])


  >>>a


  array([2,3,4])


  >>>a.dtype


  dtype('int64')


  >>>b=np.array([1.2,3.5,5.1])


  >>>b.dtype


  dtype('float64')


  二维的数组


  >>>b=np.array([(1.5,2,3),(4,5,6)])


  >>>b


  array([[1.5,2.,3.],


  [4.,5.,6.]])


  创建时指定类型


  >>>c=np.array([[1,2],[3,4]],dtype=complex)


  >>>c


  array([[1.+0.j,2.+0.j],


  [3.+0.j,4.+0.j]])


  创建一些特殊的矩阵


  >>>np.zeros((3,4))


  array([[0.,0.,0.,0.],


  [0.,0.,0.,0.],


  [0.,0.,0.,0.]])


  >>>np.ones((2,3,4),dtype=np.int16)#dtypecanalsobespecified


  array([[[1,1,1,1],


  [1,1,1,1],


  [1,1,1,1]],


  [[1,1,1,1],


  [1,1,1,1],


  [1,1,1,1]]],dtype=int16)


  >>>np.empty((2,3))#uninitialized,outputmayvary


  array([[3.73603959e-262,6.02658058e-154,6.55490914e-260],


  [5.30498948e-313,3.14673309e-307,1.00000000e+000]])


  创建一些有特定规律的矩阵


  123456789>>>np.arange(10,30,5)


  array([10,15,20,25])


  >>>np.arange(0,2,0.3)#itacceptsfloatarguments


  array([0.,0.3,0.6,0.9,1.2,1.5,1.8])


  >>>fromnumpyimportpi


  >>>np.linspace(0,2,9)#9numbersfrom0to2


  array([0.,0.25,0.5,0.75,1.,1.25,1.5,1.75,2.])


  >>>x=np.linspace(0,2*pi,100)#usefultoevaluatefunctionatlotsofpoints


  >>>f=np.sin(x)


  一些基本的运算


  加减乘除三角函数逻辑运算


  >>>a=np.array([20,30,40,50])


  >>>b=np.arange(4)


  >>>b


  array([0,1,2,3])


  >>>c=a-b


  >>>c


  array([20,29,38,47])


  >>>b**2


  array([0,1,4,9])


  >>>10*np.sin(a)


  array([9.12945251,-9.88031624,7.4511316,-2.62374854])


  >>>a<35


  array([True,True,False,False],dtype=bool)


  矩阵运算


  matlab中有.*,./等等


  但是在numpy中,如果使用+,-,×,/优先执行的是各个点之间的加减乘除法


  如果两个矩阵(方阵)可既以元素之间对于运算,又能执行矩阵运算会优先执行元素之间的运算


  >>>importnumpyasnp


  >>>A=np.arange(10,20)


  >>>B=np.arange(20,30)


  >>>A+B


  array([30,32,34,36,38,40,42,44,46,48])


  >>>A*B


  array([200,231,264,299,336,375,416,459,504,551])


  >>>A/B


  array([0,0,0,0,0,0,0,0,0,0])


  >>>B/A


  array([2,1,1,1,1,1,1,1,1,1])


  如果需要执行矩阵运算,一般就是矩阵的乘法运算


  >>>A=np.array([1,1,1,1])


  >>>B=np.array([2,2,2,2])


  >>>A.reshape(2,2)


  array([[1,1],


  [1,1]])


  >>>B.reshape(2,2)


  array([[2,2],


  [2,2]])


  >>>A*B


  array([2,2,2,2])


  >>>np.dot(A,B)


  8


  >>>A.dot(B)


  8


  一些常用的全局函数


  12345678910>>>B=np.arange(3)


  >>>B


  array([0,1,2])


  >>>np.exp(B)


  array([1.,2.71828183,7.3890561])


  >>>np.sqrt(B)


  array([0.,1.,1.41421356])


  >>>C=np.array([2.,-1.,4.])


  >>>np.add(B,C)


  array([2.,0.,6.])


  矩阵的索引分片遍历


  >>>a=np.arange(10)**3


  >>>a


  array([0,1,8,27,64,125,216,343,512,729])


  >>>a[2]


  8


  >>>a[2:5]


  array([8,27,64])


  >>>a[:6:2]=-1000#equivalenttoa[0:6:2]=-1000;fromstarttoposition6,exclusive,setevery2ndelementto-1000


  >>>a


  array([-1000,1,-1000,27,-1000,125,216,343,512,729])


  >>>a[::-1]#reverseda


  array([729,512,343,216,125,-1000,27,-1000,1,-1000])


  >>>foriina:


  ...print(i**(1/3.))


  ...


  nan


  1.0


  nan


  3.0


  nan


  5.0


  6.0


  7.0


  8.0


  9.0


  矩阵的遍历


  >>>importnumpyasnp


  >>>b=np.arange(16).reshape(4,4)


  >>>forrowinb:


  ...print(row)


  ...


  [0123]


  [4567]


  [891011]


  [12131415]


  >>>fornodeinb.flat:


  ...print(node)


  ...


  矩阵的特殊运算


  改变矩阵形状--reshape


  >>>a=np.floor(10*np.random.random((3,4)))


  >>>a


  array([[6.,5.,1.,5.],


  [5.,5.,8.,9.],


  [5.,5.,9.,7.]])


  >>>a.ravel()


  array([6.,5.,1.,5.,5.,5.,8.,9.,5.,5.,9.,7.])


  >>>a


  array([[6.,5.,1.,5.],


  [5.,5.,8.,9.],


  [5.,5.,9.,7.]])


  resize和reshape的区别


  resize会改变原来的矩阵,reshape并不会


  >>>a


  array([[6.,5.,1.,5.],


  [5.,5.,8.,9.],


  [5.,5.,9.,7.]])


  >>>a.reshape(2,-1)


  array([[6.,5.,1.,5.,5.,5.],


  [8.,9.,5.,5.,9.,7.]])


  >>>a


  array([[6.,5.,1.,5.],


  [5.,5.,8.,9.],


  [5.,5.,9.,7.]])


  >>>a.resize(2,6)


  >>>a


  array([[6.,5.,1.,5.,5.,5.],


  [8.,9.,5.,5.,9.,7.]])


  矩阵的合并


  >>>a=np.floor(10*np.random.random((2,2)))


  >>>a


  array([[8.,8.],


  [0.,0.]])


  >>>b=np.floor(10*np.random.random((2,2)))


  >>>b


  array([[1.,8.],


  [0.,4.]])


  >>>np.vstack((a,b))


  array([[8.,8.],


  [0.,0.],


  [1.,8.],


  [0.,4.]])


  >>>np.hstack((a,b))


  array([[8.,8.,1.,8.],


  [0.,0.,0.,4.]])


  以上就是关于扣丁学堂详解Python框架之NumPy常用方法总结的详细介绍,最后想要了解更多关于Python发展前景趋势,请关注扣丁学堂官网、微信等平台,扣丁学堂IT职业在线学习教育平台为您提供最新的Python培训视频教程系统,通过千锋扣丁学堂金牌讲师在线录制的Python视频教程课程,让你快速掌握Python从入门到精通开发实战技能。扣丁学堂Python技术交流群:816572891。



共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]