【NumPy基础】100道numpy练习——初学与入门篇
来源:互联网 发布:scala 调用java 数组 编辑:程序博客网 时间:2024/05/15 15:46
【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
<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道
1、创建一个8*8的“棋盘”矩阵。
<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,zmax0.014230501632 0.99548760299</span>
<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>
7、linspace函数,在给定区间中生成均匀分布的给定个数。
函数原型 linspace(start, stop, num=50, endpoint=True, retstep=False)
函数原型 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,会同时返回均匀区间中每两个数的间隔。
8、sort函数。调用random模块中的random函数生成10个随机数,然后sort排序。
<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 m0.362299527973>>> A = np.random.randint(0,2,5)>>> B = np.random.randint(0,2,5)>>> equal = np.allclose(A,B)>>> print equalFalse</span>
注:randint(min,max,num)生成大小为num的array,数值范围min~max
----------------------------2015/1/15-------------------------------
2 0
- 【NumPy基础】100道numpy练习——初学与入门篇
- 【NumPy基础】100道numpy练习——初学与入门篇
- 【NumPy基础】100道numpy练习——Apprentice篇
- 【NumPy基础】100道numpy练习——进阶篇
- 【NumPy基础】100道numpy练习——进阶篇
- 【NumPy基础】100道numpy练习——Apprentice篇
- numpy入门——基础运算
- numpy基础——numpy.argsort
- numpy基础——numpy.tile
- numpy基础——numpy.sum
- Numpy学习笔记——Numpy基础
- NumPy基础练习(练一遍搞定NumPy)
- NumPy基础入门学习
- NumPy 基础入门
- NumPy 基础入门
- 03 Numpy基础入门
- numpy 初学
- Numpy练习
- 字符串拼接函数
- UNBUTU下VIM的配置
- haarlike特征计算 积分图
- 7章6题
- HDU 2011 -- 多项式求和
- 【NumPy基础】100道numpy练习——初学与入门篇
- 网络基本功(八):细说TCP滑动窗口
- Eclipse中配置JDK以及Android环境
- 微信公众号的最后机遇,您抓住了吗?
- 微信公众平台开发—access_token的获取存储与更新(Python开发)
- XMVector3Cross
- HDU 2012 --- 素数判定
- 网络基本功(九):细说TCP重传
- 由交换机说起网络设备