我是靠谱客的博主 专注钻石,最近开发中收集的这篇文章主要介绍python学习之NumPy基础,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

今天在deeplearning.net上看theano tutorial,发现一个numpy-100-exercise,介绍numpy一些基本用法的,不过不是很具体,我利用闲暇时间照着敲了一些,权且当作翻译吧,增加函数的原型和详细介绍。持续更新。

 

一、初学者10

1、在python环境中导入numpy包,并命名为np

[python] view plaincopy

<span style="font-size:18px;">>>> import numpy as np</span>  


2、查看numpy版本和配置信息

[python] view plaincopy

<span style="font-size:18px;">>>> print np.__version__  

>>> np.__config__.show()</span>  


3、创建零向量,zeros函数

[python] view plaincopy

<span style="font-size:18px;">>>> z=np.zeros((2,3))  

>>> print z  

[[ 0.  0.  0.]  

 [ 0.  0.  0.]]</span>  


4、将上面的零向量的第二行第三列元素置为1。注意python中行列下班是从0开始。

[python] view plaincopy

<span style="font-size:18px;">>>>z[1,2]=1  

>>> print z  

[[ 0.  0.  0.]  

 [ 0.  0.  1.]]</span>  


5arange函数,创建一个在给定范围的向量。

[python] view plaincopy

<span style="font-size:18px;">>>> z=np.arange(1,101)    %1~100范围,注意不包括101  

>>> print z</span>  


6reshape函数,将array变形为矩阵

[python] view plaincopy

<span style="font-size:18px;">>>> Z = np.arange(9).reshape(3,3)  

>>> print Z  

[[0 1 2]  

 [3 4 5]  

 [6 7 8]]</span>  


7nonzero函数,寻找非0元素的下标

[python] view plaincopy

<span style="font-size:18px;">>>> nz=np.nonzero([1,2,3,0,0,4,0])  

>>> nz  

(array([0, 1, 2, 5]),)</span>  


8eye函数,生成单位向量

[python] view plaincopy

<span style="font-size:18px;">>>> z=np.eye(3)  

>>> print z  

[[ 1.  0.  0.]  

 [ 0.  1.  0.]  

 [ 0.  0.  1.]]</span>  


9diag函数,diagonal对角线。

[python] view plaincopy

<span style="font-size:18px;">>>> z=np.diag([1,2,3,4],k=0)   %k=0,以[1,2,3,4]为对角线  

>>> print z  

[[1 0 0 0]  

 [0 2 0 0]  

 [0 0 3 0]  

 [0 0 0 4]]  

  

>>> z=np.diag([1,2,3,4],k=1)   %k=1,[1,2,3,4]在对角线上一行  

>>> print z  

[[0 1 0 0 0]  

 [0 0 2 0 0]  

 [0 0 0 3 0]  

 [0 0 0 0 4]  

 [0 0 0 0 0]]  

  

>>> z=np.diag([1,2,3,4],k=-1)  %k=-1,[1,2,3,4]在对角线下一行  

>>> print z  

[[0 0 0 0 0]  

 [1 0 0 0 0]  

 [0 2 0 0 0]  

 [0 0 3 0 0]  

 [0 0 0 4 0]]</span>  


10random模块的random函数,生成随机数

[python] view plaincopy

<span style="font-size:18px;">>>> Z = np.random.random((3,3))  

>>> print Z  

[[ 0.95171484  0.61394126  0.38864802]  

 [ 0.41943918  0.9398714   0.31608202]  

 [ 0.9993507   0.91717093  0.73002723]]</span>  

 

 

二、入门级10

1、创建一个8*8棋盘矩阵。

[python] view plaincopy

<span style="font-size:18px;">>>> z=np.zeros((8,8),dtype=int)  

>>> z[1::2,::2]=1     %1、3、5、7行&&0、2、4、6列的元素置为1  

>>> print z  

[[0 0 0 0 0 0 0 0]  

 [1 0 1 0 1 0 1 0]  

 [0 0 0 0 0 0 0 0]  

 [1 0 1 0 1 0 1 0]  

 [0 0 0 0 0 0 0 0]  

 [1 0 1 0 1 0 1 0]  

 [0 0 0 0 0 0 0 0]  

 [1 0 1 0 1 0 1 0]]  

>>> z[::2,1::2]=1  

>>> print z  

[[0 1 0 1 0 1 0 1]  

 [1 0 1 0 1 0 1 0]  

 [0 1 0 1 0 1 0 1]  

 [1 0 1 0 1 0 1 0]  

 [0 1 0 1 0 1 0 1]  

 [1 0 1 0 1 0 1 0]  

 [0 1 0 1 0 1 0 1]  

 [1 0 1 0 1 0 1 0]]</span>  


2min()max()函数

[python] view plaincopy

<span style="font-size:18px;">>>> z=np.random.random((10,10))  

>>> zmin,zmax=z.min(),z.max()  

>>> print zmin,zmax  

0.014230501632 0.99548760299</span>  

 

3、函数tile(A,reps),reps即重复的次数,不仅可以是数字,还可以是array。比如构造棋盘矩阵:

[python] view plaincopy

<span style="font-size:18px;">>>> z=np.tile(np.array([[0,1],[0,1]]),(4,4))  

>>> print z  

[[0 1 0 1 0 1 0 1]  

 [0 1 0 1 0 1 0 1]  

 [0 1 0 1 0 1 0 1]  

 [0 1 0 1 0 1 0 1]  

 [0 1 0 1 0 1 0 1]  

 [0 1 0 1 0 1 0 1]  

 [0 1 0 1 0 1 0 1]  

 [0 1 0 1 0 1 0 1]]</span>  


4、归一化,将矩阵规格化到01,即最小的变成0,最大的变成1,最小与最大之间的等比缩放。

 

[python] view plaincopy

<span style="font-size:18px;">>>> Z = np.random.random((5,5))  

>>> Zmax,Zmin = Z.max(), Z.min()  

>>> Z = (Z - Zmin)/(Zmax - Zmin)  

>>> print Z  

[[ 0.          0.32173291  0.17607851  0.6270374     

  

0.95000808]  

 [ 0.49153473  0.70465605  0.61930085  0.00303294  1.          

  

]  

 [ 0.4680561   0.88742782  0.29899683  0.80704789    

  

0.12300414]  

 [ 0.05094248  0.23065875  0.82776775  0.07873239    

  

0.50644422]  

 [ 0.27417053  0.78679222  0.517819    0.5649124   0.4716856   

  

]]</span>  


5、矩阵点乘

[python] view plaincopy

<span style="font-size:18px;">>>> z=np.dot(np.ones((5,3)),np.ones((3,2)))  

>>> print z  

[[ 3.  3.]  

 [ 3.  3.]  

 [ 3.  3.]  

 [ 3.  3.]  

 [ 3.  3.]]</span>  


6、矩阵相加,5*5矩阵+1*5的向量,相当于每一行都加上1*5矩阵

 

[python] view plaincopy

<span style="font-size:18px;">>>> Z = np.zeros((5,5))  

>>> Z += np.arange(5)  

>>> print Z  

[[ 0.  1.  2.  3.  4.]  

 [ 0.  1.  2.  3.  4.]  

 [ 0.  1.  2.  3.  4.]  

 [ 0.  1.  2.  3.  4.]  

 [ 0.  1.  2.  3.  4.]]</span>  

 

7linspace函数,在给定区间中生成均匀分布的给定个数。
函数原型 linspace(start, stop, num=50, endpoint=True, retstep=False)

 

[python] view plaincopy

<span style="font-size:18px;">>>> Z = np.linspace(0,10,11,endpoint=True, retstep=False)  

>>> print Z  

[  0.   1.   2.   3.   4.   5.   6.   7.   8.   9.  10.]</span>  


生成0~10之间均匀分布的11个数,包括01
endpoint=False,10不包括在里面。
retstep=False,会同时返回均匀区间中每两个数的间隔。

 

8sort函数。调用random模块中的random函数生成10个随机数,然后sort排序。

 

[python] view plaincopy

<span style="font-size:18px;">>>> Z = np.random.random(10)  

>>> Z.sort()  

>>> print Z  

[ 0.15978787  0.28050494  0.35865916  0.40047826  0.45141311    

  

0.4828367  

  0.66133575  0.66775779  0.69278544  0.98095989]</span>  


9allclose函数,判断两个array在误差范围内是否相等
函数原型allclose(a, b, rtol=1e-05, atol=1e-08),若absolute(a - b) <= (atol + rtol * absolute(b))则相等。

[python] view plaincopy

<span style="font-size:18px;">A = np.random.randint(0,2,5)  

B = np.random.randint(0,2,5)  

equal = np.allclose(A,B)  

print equal</span>  


10mean函数,求平均值

 

[python] view plaincopy

<span style="font-size:18px;">>>> Z = np.random.random(30)  

>>> m = Z.mean()  

>>> print m  

0.362299527973  

  

>>> A = np.random.randint(0,2,5)  

>>> B = np.random.randint(0,2,5)  

>>> equal = np.allclose(A,B)  

>>> print equal  

False  

</span>  


注:randint(min,max,num)生成大小为numarray,数值范围minmax

 

最后

以上就是专注钻石为你收集整理的python学习之NumPy基础的全部内容,希望文章能够帮你解决python学习之NumPy基础所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部