【NumPy基础】100道numpy练习——Apprentice篇
【NumPy基础】100道numpy练习——Apprentice篇
@author:wepon
@blog:http://blog.csdn.net/u012162613/article/details/42811297
今天又用半小时扫了一下Apprentice篇里的10道exercise,不知道怎么翻译Apprentice(学徒~~)这个词,就直接以Apprentice篇作为题目了。numpy语法直白如水啊,花这些时间exercise有点浪费了.......Anyway,为了后面更熟练地用一些ML的包,利用闲暇时间扫一扫基本语法。原地址:https://github.com/rougier/numpy-100
1、将array属性设置为只读(read-only)
- >>> Z = np.zeros(10)
- >>> Z.flags.writeable = False
- >>> Z[0] = 1
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- ValueError: assignment destination is read-only
2、将笛卡尔坐标系下的点(x,y)转化为极坐标系的(R,T)
- >>> Z = np.random.random((10,2))
- >>> print Z
- [[ 0.49094922 0.58585236]
- [ 0.32265092 0.14445935]
- [ 0.8078448 0.70284832]
- [ 0.35341989 0.76888775]
- [ 0.01212107 0.43668101]
- [ 0.36924292 0.64075512]
- [ 0.22349212 0.4561141 ]
- [ 0.44836271 0.19591462]
- [ 0.6639701 0.16595659]
- [ 0.25559111 0.01741761]]
- >>> X,Y = Z[:,0], Z[:,1]
- >>> R = np.sqrt(X**2+Y**2)
- >>> T = np.arctan2(Y,X) %求反正切值
- >>> print R
- [ 0.76436518 0.35351396 1.07079829 0.84622337 0.4368492
- 0.73953192
- 0.50792598 0.48929711 0.684396 0.2561839 ]
- >>> print T
- [ 0.87330531 0.42096163 0.71600756 1.13994582 1.5430462
- 1.04801403
- 1.11518737 0.41195346 0.24492773 0.06804118]
3、获取数组中最大值/最小值对应的下标,argmax()、argmin()函数
- >>> Z = np.random.random(10)
- >>> print Z
- [ 0.90315764 0.06574957 0.86297424 0.46519603 0.01174512
- 0.60977188
- 0.52107975 0.6328012 0.12344019 0.05034712]
- >>> Z.argmax()
- 0
- >>> Z.argmin()
- 4
4、meshgrid()产生格点矩阵,用于三维曲面的分格线座标
- >>> Z = np.zeros((10,10), [('x',float),('y',float)])
- >>> Z['x'], Z['y'] = np.meshgrid(np.linspace(0,1,10),
- np.linspace(0,1,10))
- >>> print Z
5、各种数据类型的最大值/最小值,主要有8位、32位、64位整型,32位、64位浮点型
- >>> for dtype in [np.int8, np.int32, np.int64]:
- ... print np.iinfo(dtype).min
- ... print np.iinfo(dtype).max
- ...
- -128
- 127
- -2147483648
- 2147483647
- -9223372036854775808
- 9223372036854775807
- >>> for dtype in [np.float32, np.float64]:
- ... print np.finfo(dtype).min
- ... print np.finfo(dtype).max
- ... print np.finfo(dtype).eps
- ...
- -3.40282e+38
- 3.40282e+38
- 1.19209e-07
- -1.79769313486e+308
- 1.79769313486e+308
- 2.22044604925e-16
6、生成一个矩阵,矩阵中每个元素由坐标(x,y)以及颜色(r,g,b)组成
- >>> Z = np.zeros(10, [ ('position', [ ('x', float, 1),
- ... ('y', float, 1)]),
- ... ('color', [ ('r', float, 1),
- ... ('g', float, 1),
- ... ('b', float, 1)])])
- >>> print Z
- [((0.0, 0.0), (0.0, 0.0, 0.0)) ((0.0, 0.0), (0.0, 0.0, 0.0))
- ((0.0, 0.0), (0.0, 0.0, 0.0)) ((0.0, 0.0), (0.0, 0.0, 0.0))
- ((0.0, 0.0), (0.0, 0.0, 0.0)) ((0.0, 0.0), (0.0, 0.0, 0.0))
- ((0.0, 0.0), (0.0, 0.0, 0.0)) ((0.0, 0.0), (0.0, 0.0, 0.0))
- ((0.0, 0.0), (0.0, 0.0, 0.0)) ((0.0, 0.0), (0.0, 0.0, 0.0))]
7、生成10个坐标(x,y),计算两两之间的距离
- >>> Z = np.random.random((10,2))
- >>> X,Y = np.atleast_2d(Z[:,0]), np.atleast_2d(Z[:,1])
- >>> D = np.sqrt( (X-X.T)**2 + (Y-Y.T)**2)
- >>> print D %D是10*10,对角线的值都是0
也可以直接用scipy里的cdist函数
- # Much faster with scipy
- import scipy
- Z = np.random.random((10,2))
- D = scipy.spatial.distance.cdist(Z,Z)
- print D
8、生成二维的高斯矩阵
- >>> X, Y = np.meshgrid(np.linspace(-1,1,10), np.linspace(-
- 1,1,10))
- >>> D = np.sqrt(X*X+Y*Y)
- >>> sigma, mu = 1.0, 0.0 %方差=1,均值=0
- >>> G = np.exp(-( (D-mu)**2 / ( 2.0 * sigma**2 ) ) )
- >>> print G
- [[ 0.36787944 0.44822088 0.51979489 0.57375342 0.60279818
- 0.60279818
- 0.57375342 0.51979489 0.44822088 0.36787944]
- [ 0.44822088 0.54610814 0.63331324 0.69905581 0.73444367
- 0.73444367
- 0.69905581 0.63331324 0.54610814 0.44822088]
- [ 0.51979489 0.63331324 0.73444367 0.81068432 0.85172308
- 0.85172308
- 0.81068432 0.73444367 0.63331324 0.51979489]
- [ 0.57375342 0.69905581 0.81068432 0.89483932 0.9401382
- 0.9401382
- 0.89483932 0.81068432 0.69905581 0.57375342]
- [ 0.60279818 0.73444367 0.85172308 0.9401382 0.98773022
- 0.98773022
- 0.9401382 0.85172308 0.73444367 0.60279818]
- [ 0.60279818 0.73444367 0.85172308 0.9401382 0.98773022
- 0.98773022
- 0.9401382 0.85172308 0.73444367 0.60279818]
- [ 0.57375342 0.69905581 0.81068432 0.89483932 0.9401382
- 0.9401382
- 0.89483932 0.81068432 0.69905581 0.57375342]
- [ 0.51979489 0.63331324 0.73444367 0.81068432 0.85172308
- 0.85172308
- 0.81068432 0.73444367 0.63331324 0.51979489]
- [ 0.44822088 0.54610814 0.63331324 0.69905581 0.73444367
- 0.73444367
- 0.69905581 0.63331324 0.54610814 0.44822088]
- [ 0.36787944 0.44822088 0.51979489 0.57375342 0.60279818
- 0.60279818
- 0.57375342 0.51979489 0.44822088 0.36787944]]
9、any函数,判断矩阵中的元素是否满足给定的条件,是的话返回True,否则返回False。例子:判断二维矩阵中有没有一整列数为0?
- >>> Z = np.random.randint(0,3,(2,10))
- >>> print Z
- [[1 0 1 2 2 0 1 0 1 0]
- [0 0 1 2 2 0 1 0 0 1]]
- >>> print Z.any(axis=0) %按列判断,全0则为False
- [ True False True True True False True False True True]
- >>> print (~Z.any(axis=0)).any()
- True
10、找出数组中与给定值最接近的数
- >>> Z=array([[0,1,2,3],[4,5,6,7]])
- >>> print Z
- [[0 1 2 3]
- [4 5 6 7]]
- >>> z=5.1
- >>> np.abs(Z - z).argmin()
- 5
- >>> print Z.flat[np.abs(Z - z).argmin()]
- 5
补充介绍:
flat是一个一维迭代器,将Z当成一维向量去遍历,Z[5]将超出原来矩阵的边界,Z.flat[5]才是正确的用法。
另外,不得不提flatten,它将矩阵摊平为一维向量:
- >>> Z.flatten()
- array([0, 1, 2, 3, 4, 5, 6, 7])
【NumPy基础】100道numpy练习——Apprentice篇相关推荐
- 数据分析之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中的常用函数,但是没有举例子解释说明.那么 ...
- 看图学NumPy:掌握n维数组基础知识点,看这一篇就够了
晓查 编译整理 量子位 报道 | 公众号 QbitAI NumPy是Python的最重要的扩展程序库之一,也是入门机器学习编程的必备工具.然而对初学者来说,NumPy的大量运算方法非常难记. 最近, ...
- ios 取出数组中前两个元素_看图学NumPy:掌握n维数组基础知识点,看这一篇就够了...
晓查 编译整理 量子位 报道 | 公众号 QbitAI NumPy是Python的最重要的扩展程序库之一,也是入门机器学习编程的必备工具.然而对初学者来说,NumPy的大量运算方法非常难记. 最近,国 ...
- 100道练习题,玩转Numpy模块!(上)
100道练习题,玩转Numpy模块!(上) Numpy 介绍 Numpy 是 Python 做数据分析所必须要掌握的基础库之一.以下为入门 Numpy 的100题小练习,原为 github 上的开源项 ...
- numpy基础篇-简单入门教程4
numpy基础篇-简单入门教程4 np.set_printoptions(precision=3),只显示小数点后三位 np.random.seed(100)rand_arr = np.random. ...
最新文章
- 消费者版 Vive Trackers 正式发布,只会与 Steam 1.0 基站适配
- python实现e2lsh高维数据集k近邻搜索——实现流程
- python人人贷爬虫_爬取人人贷网上部分借贷信息以及数据可视化
- YbtOJ#912-神秘语言【结论,欧拉定理】
- formdata.append加多个值_redis的五种数据结构和应用场景:微博微信点赞+加购物车等...
- 控件设置相对位置_惊人的Divi转换控件!
- mysql 序列化存储_如何将类序列化并直接存储入数据库
- Divergent series
- Jzoj5445【NOIP2017提高A组冲刺11.2】失格
- 轻松掌握namedtuple
- MyBatis3简介
- 什么是chirp信号
- [面试] 步步为营:吉大学士的PG宝洁面经
- css3边框交替动画_用纯CSS3制作的效果非常炫酷的元素边框线条动画特效
- ie无法下载 无法打开该internet站点.请求的站点不可用或无法找到.请稍后重试
- html网页随机一言,PHP简单实现一言 / 随机语录功能
- 中国石油大学(北京)-《汇编语言程序设计》第一阶段在线作业
- 腾讯最难lua面试题答案及解析
- in a future version of numpy, it will be understood as (type, (1,))
- 小姐姐拯救计划之我的NAS有ipv6域名之蛇皮操作
热门文章
- 介绍一下python getopt 模块
- k邻近算法应用实例(一) 改进约会网站的配对效果
- 第三百四十四节,Python分布式爬虫打造搜索引擎Scrapy精讲—craw母版l创建自动爬虫文件—以及 scrapy item loader机制...
- 仙人掌(cactus)
- PHP读取CSV文件
- 2012 定制化产品探讨(周金根).pdf
- [原]工欲善其事,必先利其器,记一次处理Oracle Listener挂掉的处理过程
- vue里动态设置并获取ref
- 【转贴】 java 调用SAP RFC函数 报错信息搜集
- 初识java atomic