【NumPy基础】100道numpy练习——初学与入门篇
【NumPy基础】100道numpy练习——初学与入门篇
@author:wepon
@blog:http://blog.csdn.net/u012162613/article/details/42784403
今天在deeplearning.net上看theano tutorial,发现一个numpy-100-exercise,介绍numpy一些基本用法的,不过不是很具体,我利用闲暇时间照着敲了一些,权且当作翻译吧,增加函数的原型和详细介绍。持续更新。
一、初学者10道
- <span style="font-size:18px;">>>> import numpy as np</span>
2、查看numpy版本和配置信息
- <span style="font-size:18px;">>>> print np.__version__
- >>> np.__config__.show()</span>
3、创建零向量,zeros函数
- <span style="font-size:18px;">>>> z=np.zeros((2,3))
- >>> print z
- [[ 0. 0. 0.]
- [ 0. 0. 0.]]</span>
4、将上面的零向量的第二行第三列元素置为1。注意python中行列下班是从0开始。
- <span style="font-size:18px;">>>>z[1,2]=1
- >>> print z
- [[ 0. 0. 0.]
- [ 0. 0. 1.]]</span>
5、arange函数,创建一个在给定范围的向量。
- <span style="font-size:18px;">>>> z=np.arange(1,101) %1~100范围,注意不包括101
- >>> print z</span>
6、reshape函数,将array变形为矩阵
- <span style="font-size:18px;">>>> Z = np.arange(9).reshape(3,3)
- >>> print Z
- [[0 1 2]
- [3 4 5]
- [6 7 8]]</span>
7、nonzero函数,寻找非0元素的下标
- <span style="font-size:18px;">>>> nz=np.nonzero([1,2,3,0,0,4,0])
- >>> nz
- (array([0, 1, 2, 5]),)</span>
8、eye函数,生成单位向量
- <span style="font-size:18px;">>>> z=np.eye(3)
- >>> print z
- [[ 1. 0. 0.]
- [ 0. 1. 0.]
- [ 0. 0. 1.]]</span>
9、diag函数,diagonal对角线。
- <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>
10、random模块的random函数,生成随机数
- <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道
- <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>
2、min()、max()函数
- <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。比如构造棋盘矩阵:
- <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、归一化,将矩阵规格化到0~1,即最小的变成0,最大的变成1,最小与最大之间的等比缩放。
- <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、矩阵点乘
- <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矩阵
- <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>
函数原型 linspace(start, stop, num=50, endpoint=True, retstep=False)
- <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个数,包括0和1。
若endpoint=False,则10不包括在里面。
若retstep=False,会同时返回均匀区间中每两个数的间隔。
- <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>
9、allclose函数,判断两个array在误差范围内是否相等
函数原型allclose(a, b, rtol=1e-05, atol=1e-08),若absolute(a - b) <= (atol + rtol * absolute(b))则相等。
- <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>
10、mean函数,求平均值
- <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)生成大小为num的array,数值范围min~max
【NumPy基础】100道numpy练习——初学与入门篇相关推荐
- 数据分析之numpy基础/matplotlib绘图/numpy常用函数/杂项功能
文章目录 数据分析 numpy概述 numpy`历史` numpy的核心:多维数组 numpy基础 ndarray数组 内存中的ndarray对象 ndarray数组对象的特点 ndarray数组对象 ...
- python之numpy基础_Python之NumPy学习(基础篇)
NumPy(NumericalPython的缩写)是一个开源的Python科学计算库.使用NumPy,就可以很自然的使用数组和矩阵.NumPy包含很多实用的数学函数,涵盖线性代数运算.傅里叶变换和随机 ...
- 【numpy】20道numpy题目
1.创建一个长度为10的一维全为0的ndarray对象,然后让第5个元素等于1 import numpy as npndarry =np.zeros(10) ndarry array([0., 0., ...
- 网络基础——100道面试题,你能答对多少?
文章目录 1.网站登陆缓慢是什么原因? 2.a与b服务器不在同一网段怎么设置?设置完还ping不通怎么排查? 3.在AB两台服务器之间通过一个服务器c做软路由使用给路由器c配置两块网卡并开启自身的路由 ...
- python基础100道例题
本部分来源于菜鸟教程100道中 菜鸟教程链接一百题地址:Python 100例 | 菜鸟教程 第一题 题目:有四个数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析: ...
- 别整天 “学妹/前女友”了,花2小时整理了Numpy测试习题100道,做个测验吧!
前面,已经为大家发布了Numpy系列的十篇文章,这里暂时告一段落,现为大家提供100道Numpy练习题,算是作为一个查漏补缺吧! 前面我为大家总结了Numpy中的常用函数,但是没有举例子解释说明.那么 ...
- Membership三步曲之入门篇 - Membership基础示例
Membership 三步曲之入门篇 - Membership基础示例 Membership三步曲之入门篇 - Membership基础示例 Membership三步曲之进阶篇 - 深入剖析Pro ...
- Java新手小白入门篇 Java基础(一)
Java新手小白入门篇 Java基础 Java新手小白入门篇 Java基础(知识点体系汇总) Java新手小白入门篇 Java基础(一) Java新手小白入门篇 Java基础(二) Java新手小白入 ...
- 100道练习题,玩转Numpy模块!(上)
100道练习题,玩转Numpy模块!(上) Numpy 介绍 Numpy 是 Python 做数据分析所必须要掌握的基础库之一.以下为入门 Numpy 的100题小练习,原为 github 上的开源项 ...
- [转]numpy 100道练习题
100 numpy exercise 翻译:YingJoy 网址: https://www.yingjoy.cn/ 来源:https://github.com/rougier/numpy-100 Nu ...
最新文章
- cocos2d-js中Hello World代码分析
- opencv-python实现马赛克油画漫画风格的图片
- JavaScript实现递归楼梯问题(蛮力解决方案)算法(附完整源码)
- MySQL与Python交互入门
- 【图像处理】——实现二值图像的轮廓边界跟踪以及轮廓面积周长的求解(connectedComponentsWithStats()函数和connectedComponents()函数)
- datepicker不能选择是为什么_为什么客厅不好看?休闲椅选错了
- 【转】解决win7下重装winXP 系统启动选择菜单消失 问题
- 外接鼠标键盘无反应处理
- mySql 修改字段自增
- COGS2421 简单的Treap
- python 比较两文件夹的内容,具有通用性。
- echarts切换飞线图未清空_讯飞iFLYOS成就产品快速落地 智能硬件迈入直道竞速赛...
- 水晶球 crystal ball
- 《深入理解Nginx》 学习笔记(二)
- 怎样能看懂matlab中的代码,初学者怎样能看懂代码
- 锁住文件linux,关于Linux文件锁定保护命令chattr
- java微信企业号接入_java微信企业号接入开发
- 大橙子主题vfed3.15模板
- 建立了一个博客园创业者QQ群
- 【嵌入式Linux】学习路径
热门文章
- Jenkins 构建触发器操作详解
- weak属性需要在dealloc中置nil么?
- (十进制高速幂+矩阵优化)BZOJ 3240 3240: [Noi2013]矩阵游戏
- 外网访问Vmware虚拟机中的某个服务(如http)
- SQL Server 2005 技术内幕之T-SQL查询——逻辑查询处理(上)
- Office 2007无法卸载也无法安装的解决
- 听说你在学Python?来点PEP吧
- 数据结构与算法系列----字典树
- 百度API从经纬度坐标到地址的转换服务
- syntax error near unexpected token `then'