100道numpy练习


100道numpy练习

@author:wepon

@blog:http://blog.csdn.net/u012162613/article/details/42784403

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


1、初学者10道

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

>>> import numpy as np

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

>>> print np.__version__
>>> np.__config__.show()

3、创建零向量,zeros函数

>>> z=np.zeros((2,3))
>>> print z
[[ 0. 0. 0.]
[ 0. 0. 0.]]

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

>>>z[1,2]=1
>>> print z
[[ 0. 0. 0.]
[ 0. 0. 1.]]

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

>>> z=np.arange(1,101) %1~100范围,注意不包括101
>>> print z

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

>>> Z = np.arange(9).reshape(3,3)
>>> print Z
[[0 1 2]
[3 4 5]
[6 7 8]]

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

>>> nz=np.nonzero([1,2,3,0,0,4,0])
>>> nz
(array([0, 1, 2, 5]),)

8、eye函数,生成单位向量

>>> z=np.eye(3)
>>> print z
[[ 1. 0. 0.]
[ 0. 1. 0.]
[ 0. 0. 1.]]

9、diag函数,diagonal对角线。

>>> 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]在对角线上1行
>>> 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=⑴) %k=⑴,[1,2,3,4]在对角线下1行
>>> 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]]

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

>>> 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]]

2、入门级10道

1、创建1个8*8的“棋盘”矩阵。

>>> 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]]

2、min()、max()函数

>>> z=np.random.random((10,10))
>>> zmin,zmax=z.min(),z.max()
>>> print zmin,zmax
0.014230501632 0.99548760299

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

>>> 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]]

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


>>> 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

]]

5、矩阵点乘

>>> z=np.dot(np.ones((5,3)),np.ones((3,2)))
>>> print z
[[ 3. 3.]
[ 3. 3.]
[ 3. 3.]
[ 3. 3.]
[ 3. 3.]]

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


>>> 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.]]
7、linspace函数,在给定区间中生成均匀散布的给定个数。
函数原型 linspace(start, stop, num=50, endpoint=True, retstep=False)

>>> Z = np.linspace(0,10,11,endpoint=True, retstep=False)
>>> print Z
[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]

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


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

>>> 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]

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

A = np.random.randint(0,2,5)
B = np.random.randint(0,2,5)
equal = np.allclose(A,B)
print equal

10、mean函数,求平均值


>>> 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

注:randint(min,max,num)生成大小为num的array,数值范围min~max




—————————⑵015/1/15——————————-

波比源码 – 精品源码模版分享 | www.bobi11.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

波比源码 » 100道numpy练习

发表评论

Hi, 如果你对这款模板有疑问,可以跟我联系哦!

联系站长
赞助VIP 享更多特权,建议使用 QQ 登录
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡