【NumPy基础】100道numpy练习——初学与入门篇

@author:wepon

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

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

一、初学者10道

1、在python环境中导入numpy包,并命名为np
[python] view plaincopy
  1. <span style="font-size:18px;">>>> import numpy as np</span>

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

[python] view plaincopy
  1. <span style="font-size:18px;">>>> print np.__version__
  2. >>> np.__config__.show()</span>

3、创建零向量,zeros函数

[python] view plaincopy
  1. <span style="font-size:18px;">>>> z=np.zeros((2,3))
  2. >>> print z
  3. [[ 0.  0.  0.]
  4. [ 0.  0.  0.]]</span>

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

[python] view plaincopy
  1. <span style="font-size:18px;">>>>z[1,2]=1
  2. >>> print z
  3. [[ 0.  0.  0.]
  4. [ 0.  0.  1.]]</span>

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

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

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

[python] view plaincopy
  1. <span style="font-size:18px;">>>> Z = np.arange(9).reshape(3,3)
  2. >>> print Z
  3. [[0 1 2]
  4. [3 4 5]
  5. [6 7 8]]</span>

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

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

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

[python] view plaincopy
  1. <span style="font-size:18px;">>>> z=np.eye(3)
  2. >>> print z
  3. [[ 1.  0.  0.]
  4. [ 0.  1.  0.]
  5. [ 0.  0.  1.]]</span>

9、diag函数,diagonal对角线。

[python] view plaincopy
  1. <span style="font-size:18px;">>>> z=np.diag([1,2,3,4],k=0)   %k=0,以[1,2,3,4]为对角线
  2. >>> print z
  3. [[1 0 0 0]
  4. [0 2 0 0]
  5. [0 0 3 0]
  6. [0 0 0 4]]
  7. >>> z=np.diag([1,2,3,4],k=1)   %k=1,[1,2,3,4]在对角线上一行
  8. >>> print z
  9. [[0 1 0 0 0]
  10. [0 0 2 0 0]
  11. [0 0 0 3 0]
  12. [0 0 0 0 4]
  13. [0 0 0 0 0]]
  14. >>> z=np.diag([1,2,3,4],k=-1)  %k=-1,[1,2,3,4]在对角线下一行
  15. >>> print z
  16. [[0 0 0 0 0]
  17. [1 0 0 0 0]
  18. [0 2 0 0 0]
  19. [0 0 3 0 0]
  20. [0 0 0 4 0]]</span>

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

[python] view plaincopy
  1. <span style="font-size:18px;">>>> Z = np.random.random((3,3))
  2. >>> print Z
  3. [[ 0.95171484  0.61394126  0.38864802]
  4. [ 0.41943918  0.9398714   0.31608202]
  5. [ 0.9993507   0.91717093  0.73002723]]</span>

二、入门级10道

1、创建一个8*8的“棋盘”矩阵。
[python] view plaincopy
  1. <span style="font-size:18px;">>>> z=np.zeros((8,8),dtype=int)
  2. >>> z[1::2,::2]=1     %1、3、5、7行&&0、2、4、6列的元素置为1
  3. >>> print z
  4. [[0 0 0 0 0 0 0 0]
  5. [1 0 1 0 1 0 1 0]
  6. [0 0 0 0 0 0 0 0]
  7. [1 0 1 0 1 0 1 0]
  8. [0 0 0 0 0 0 0 0]
  9. [1 0 1 0 1 0 1 0]
  10. [0 0 0 0 0 0 0 0]
  11. [1 0 1 0 1 0 1 0]]
  12. >>> z[::2,1::2]=1
  13. >>> print z
  14. [[0 1 0 1 0 1 0 1]
  15. [1 0 1 0 1 0 1 0]
  16. [0 1 0 1 0 1 0 1]
  17. [1 0 1 0 1 0 1 0]
  18. [0 1 0 1 0 1 0 1]
  19. [1 0 1 0 1 0 1 0]
  20. [0 1 0 1 0 1 0 1]
  21. [1 0 1 0 1 0 1 0]]</span>

2、min()、max()函数

[python] view plaincopy
  1. <span style="font-size:18px;">>>> z=np.random.random((10,10))
  2. >>> zmin,zmax=z.min(),z.max()
  3. >>> print zmin,zmax
  4. 0.014230501632 0.99548760299</span>

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

[python] view plaincopy
  1. <span style="font-size:18px;">>>> z=np.tile(np.array([[0,1],[0,1]]),(4,4))
  2. >>> print z
  3. [[0 1 0 1 0 1 0 1]
  4. [0 1 0 1 0 1 0 1]
  5. [0 1 0 1 0 1 0 1]
  6. [0 1 0 1 0 1 0 1]
  7. [0 1 0 1 0 1 0 1]
  8. [0 1 0 1 0 1 0 1]
  9. [0 1 0 1 0 1 0 1]
  10. [0 1 0 1 0 1 0 1]]</span>

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

[python] view plaincopy
  1. <span style="font-size:18px;">>>> Z = np.random.random((5,5))
  2. >>> Zmax,Zmin = Z.max(), Z.min()
  3. >>> Z = (Z - Zmin)/(Zmax - Zmin)
  4. >>> print Z
  5. [[ 0.          0.32173291  0.17607851  0.6270374
  6. 0.95000808]
  7. [ 0.49153473  0.70465605  0.61930085  0.00303294  1.
  8. ]
  9. [ 0.4680561   0.88742782  0.29899683  0.80704789
  10. 0.12300414]
  11. [ 0.05094248  0.23065875  0.82776775  0.07873239
  12. 0.50644422]
  13. [ 0.27417053  0.78679222  0.517819    0.5649124   0.4716856
  14. ]]</span>

5、矩阵点乘

[python] view plaincopy
  1. <span style="font-size:18px;">>>> z=np.dot(np.ones((5,3)),np.ones((3,2)))
  2. >>> print z
  3. [[ 3.  3.]
  4. [ 3.  3.]
  5. [ 3.  3.]
  6. [ 3.  3.]
  7. [ 3.  3.]]</span>

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

[python] view plaincopy
  1. <span style="font-size:18px;">>>> Z = np.zeros((5,5))
  2. >>> Z += np.arange(5)
  3. >>> print Z
  4. [[ 0.  1.  2.  3.  4.]
  5. [ 0.  1.  2.  3.  4.]
  6. [ 0.  1.  2.  3.  4.]
  7. [ 0.  1.  2.  3.  4.]
  8. [ 0.  1.  2.  3.  4.]]</span>
7、linspace函数,在给定区间中生成均匀分布的给定个数。
函数原型 linspace(start, stop, num=50, endpoint=True, retstep=False)
[python] view plaincopy
  1. <span style="font-size:18px;">>>> Z = np.linspace(0,10,11,endpoint=True, retstep=False)
  2. >>> print Z
  3. [  0.   1.   2.   3.   4.   5.   6.   7.   8.   9.  10.]</span>

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

8、sort函数。调用random模块中的random函数生成10个随机数,然后sort排序。
[python] view plaincopy
  1. <span style="font-size:18px;">>>> Z = np.random.random(10)
  2. >>> Z.sort()
  3. >>> print Z
  4. [ 0.15978787  0.28050494  0.35865916  0.40047826  0.45141311
  5. 0.4828367
  6. 0.66133575  0.66775779  0.69278544  0.98095989]</span>

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

[python] view plaincopy
  1. <span style="font-size:18px;">A = np.random.randint(0,2,5)
  2. B = np.random.randint(0,2,5)
  3. equal = np.allclose(A,B)
  4. print equal</span>

10、mean函数,求平均值

[python] view plaincopy
  1. <span style="font-size:18px;">>>> Z = np.random.random(30)
  2. >>> m = Z.mean()
  3. >>> print m
  4. 0.362299527973
  5. >>> A = np.random.randint(0,2,5)
  6. >>> B = np.random.randint(0,2,5)
  7. >>> equal = np.allclose(A,B)
  8. >>> print equal
  9. False
  10. </span>

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

----------------------------2015/1/15-------------------------------

【NumPy基础】100道numpy练习——初学与入门篇相关推荐

  1. 数据分析之numpy基础/matplotlib绘图/numpy常用函数/杂项功能

    文章目录 数据分析 numpy概述 numpy`历史` numpy的核心:多维数组 numpy基础 ndarray数组 内存中的ndarray对象 ndarray数组对象的特点 ndarray数组对象 ...

  2. python之numpy基础_Python之NumPy学习(基础篇)

    NumPy(NumericalPython的缩写)是一个开源的Python科学计算库.使用NumPy,就可以很自然的使用数组和矩阵.NumPy包含很多实用的数学函数,涵盖线性代数运算.傅里叶变换和随机 ...

  3. 【numpy】20道numpy题目

    1.创建一个长度为10的一维全为0的ndarray对象,然后让第5个元素等于1 import numpy as npndarry =np.zeros(10) ndarry array([0., 0., ...

  4. 网络基础——100道面试题,你能答对多少?

    文章目录 1.网站登陆缓慢是什么原因? 2.a与b服务器不在同一网段怎么设置?设置完还ping不通怎么排查? 3.在AB两台服务器之间通过一个服务器c做软路由使用给路由器c配置两块网卡并开启自身的路由 ...

  5. python基础100道例题

    本部分来源于菜鸟教程100道中 菜鸟教程链接一百题地址:Python 100例 | 菜鸟教程 第一题 题目:有四个数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析: ...

  6. 别整天 “学妹/前女友”了,花2小时整理了Numpy测试习题100道,做个测验吧!

    前面,已经为大家发布了Numpy系列的十篇文章,这里暂时告一段落,现为大家提供100道Numpy练习题,算是作为一个查漏补缺吧! 前面我为大家总结了Numpy中的常用函数,但是没有举例子解释说明.那么 ...

  7. Membership三步曲之入门篇 - Membership基础示例

    Membership 三步曲之入门篇 - Membership基础示例 Membership三步曲之入门篇 -  Membership基础示例 Membership三步曲之进阶篇 -  深入剖析Pro ...

  8. Java新手小白入门篇 Java基础(一)

    Java新手小白入门篇 Java基础 Java新手小白入门篇 Java基础(知识点体系汇总) Java新手小白入门篇 Java基础(一) Java新手小白入门篇 Java基础(二) Java新手小白入 ...

  9. 100道练习题,玩转Numpy模块!(上)

    100道练习题,玩转Numpy模块!(上) Numpy 介绍 Numpy 是 Python 做数据分析所必须要掌握的基础库之一.以下为入门 Numpy 的100题小练习,原为 github 上的开源项 ...

  10. [转]numpy 100道练习题

    100 numpy exercise 翻译:YingJoy 网址: https://www.yingjoy.cn/ 来源:https://github.com/rougier/numpy-100 Nu ...

最新文章

  1. cocos2d-js中Hello World代码分析
  2. opencv-python实现马赛克油画漫画风格的图片
  3. JavaScript实现递归楼梯问题(蛮力解决方案)算法(附完整源码)
  4. MySQL与Python交互入门
  5. 【图像处理】——实现二值图像的轮廓边界跟踪以及轮廓面积周长的求解(connectedComponentsWithStats()函数和connectedComponents()函数)
  6. datepicker不能选择是为什么_为什么客厅不好看?休闲椅选错了
  7. 【转】解决win7下重装winXP 系统启动选择菜单消失 问题
  8. 外接鼠标键盘无反应处理
  9. mySql 修改字段自增
  10. COGS2421 简单的Treap
  11. python 比较两文件夹的内容,具有通用性。
  12. echarts切换飞线图未清空_讯飞iFLYOS成就产品快速落地 智能硬件迈入直道竞速赛...
  13. 水晶球 crystal ball
  14. 《深入理解Nginx》 学习笔记(二)
  15. 怎样能看懂matlab中的代码,初学者怎样能看懂代码
  16. 锁住文件linux,关于Linux文件锁定保护命令chattr
  17. java微信企业号接入_java微信企业号接入开发
  18. 大橙子主题vfed3.15模板
  19. 建立了一个博客园创业者QQ群
  20. 【嵌入式Linux】学习路径

热门文章

  1. Jenkins 构建触发器操作详解
  2. weak属性需要在dealloc中置nil么?
  3. (十进制高速幂+矩阵优化)BZOJ 3240 3240: [Noi2013]矩阵游戏
  4. 外网访问Vmware虚拟机中的某个服务(如http)
  5. SQL Server 2005 技术内幕之T-SQL查询——逻辑查询处理(上)
  6. Office 2007无法卸载也无法安装的解决
  7. 听说你在学Python?来点PEP吧
  8. 数据结构与算法系列----字典树
  9. 百度API从经纬度坐标到地址的转换服务
  10. syntax error near unexpected token `then'