numpy的100个练习(一)
来源:互联网 发布:东莞广电网络官网 编辑:程序博客网 时间:2024/06/05 16:12
原始地址是:https://github.com/rougier/numpy-100
导入,查看版本,配置就不说了
1.创建大小为10的,值为0的向量
Z = np.zeros(10)print Z>>>[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
2.创建大小为10的,第五个值为1的向量
Z = np.zeros(10)Z[4] = 1print Z >>>[ 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]
3.创建一个值是从10到49的向量
>>> Z = np.arange(10,50)>>> print Z[10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49]
4.倒置一个xiang向量
>>> Z = np.arange(50)>>> Z = Z[::-1]>>> print Z[49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0]
5.创建一个值是从0到8的3*3矩阵
>>> Z = np.arange(9).reshape(3,3)>>> print Z[[0 1 2] [3 4 5] [6 7 8]]
6.从[1,2,0,0,4,0]找非零的元素
>>> nz = np.nonzero([1,2,0,0,4,0])>>> print nz (array([0, 1, 4], dtype=int64),)
7.创建一个3*3的单位矩阵(identity matrix)
>>> Z = np.eye(3)>>> print Z[[ 1. 0. 0.] [ 0. 1. 0.] [ 0. 0. 1.]]
8.创建一个3*3*3的随机数组
>>> Z= np.random.random((3,3,3))>>> print Z[[[ 0.88100043 0.99671944 0.49115181] [ 0.79868516 0.91657235 0.93335331] [ 0.49822087 0.05067913 0.4659928 ]] [[ 0.68226235 0.57003483 0.70215595] [ 0.88865496 0.68478705 0.5799058 ] [ 0.24645611 0.25517091 0.65551784]] [[ 0.14453694 0.14233631 0.9115872 ] [ 0.97808973 0.89988026 0.5890676 ] [ 0.67648551 0.2011385 0.87718941]]]
9.创建一个10*10的随机数组并查找最大最小值
>>> Z = np.random.random((10,10))>>> Zmin, Zmax = Z.min(), Z.max()>>> print Zmin, Zmax0.0259245459748 0.979047597949
10.创建一个大小为10的向量,并找到平均值(mean value)
>>> Z = np.random.random(30)>>> m = Z.mean()>>> print m 0.419596799849
11.创建一个10*10的数组,并且边框是1,里面是0
>>> Z = np.ones((10,10))>>> Z[1:-1,1:-1] = 0>>> print Z[[ 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.] [ 1. 0. 0. 0. 0. 0. 0. 0. 0. 1.] [ 1. 0. 0. 0. 0. 0. 0. 0. 0. 1.] [ 1. 0. 0. 0. 0. 0. 0. 0. 0. 1.] [ 1. 0. 0. 0. 0. 0. 0. 0. 0. 1.] [ 1. 0. 0. 0. 0. 0. 0. 0. 0. 1.] [ 1. 0. 0. 0. 0. 0. 0. 0. 0. 1.] [ 1. 0. 0. 0. 0. 0. 0. 0. 0. 1.] [ 1. 0. 0. 0. 0. 0. 0. 0. 0. 1.] [ 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]]
12.下面表达的输出结果是什么
0 * np.nannp.nan == np.nannp.inf > np.nannp.nan - np.nan0.3 == 3 * 0.1
>>> print 0*np.nan,np.nan==np.nan,np.inf>np.nan,np.nan-np.nan,0.3==3*0.1nan False False nan False
13.创建一个对角线(diagonal)下面是1,2,3,4的5*5矩阵
>>> Z = np.diag(1+np.arange(4),k=-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]]
14.创建一个用国际象棋棋盘团填充的8*8矩阵
>>> Z = np.zeros((8,8),dtype=int)>>> Z[1::2,::2] = 1>>> 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]]
15.考虑一个(6,7,8)形状的数组,第一百个元素的索引(x,y,z)是什么
>>> print np.unravel_index(100,(6,7,8))(1, 5, 4)
16.用tile函数创建一个8*8的棋盘格矩阵
>>> Z= np.tile(np.array([[0,1],[1,0]]),(4,4))>>> 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]]
17.标准化(normalize)一个5*5的矩阵
>>> Z= np.random.random((5,5))>>> Zmax,Zmin = Z.max(),Z.min()>>> Z = (Z - Zmin)/(Zmax - Zmin)>>> print Z[[ 0.70496691 0.32518005 0.02003866 0.6112847 0.69277832] [ 0.62611846 0.48836881 0.10585828 0.60041398 0.31808683] [ 0.10608773 0.68116413 0.3803287 0.87813125 0.28595538] [ 1. 0.78836953 0.2813948 0.53334023 0.96452685] [ 0.20375579 0.06057498 0.45261834 0. 0.50613968]]
18.一个5*3的矩阵乘上一个3*2的矩阵
>>> Z = np.dot(np.ones((5,3)),np.ones((3,2)))>>> print Z[[ 3. 3.] [ 3. 3.] [ 3. 3.] [ 3. 3.] [ 3. 3.]]
19.给一个1D数组,把3到8的数取反
>>> Z = np.arange(11)>>> Z[(3<Z)&(Z<=8)] *= -1>>> print Z[ 0 1 2 3 -4 -5 -6 -7 -8 9 10]
20.创建一个行值是从0到4的5*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.]]
21.创建一个发生器函数并用他产生10个迭代数并创建成数组
>>> def generate():... for x in xrange(10):... yield x... >>> Z = np.fromiter(generate(),dtype=float,count=-1)>>> print Z[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]
22.创建一个大小为10,值在01但不包括01的向量
>>> Z = np.linspace(0,1,12,endpoint=True)[1:-1]>>> print Z[ 0.09090909 0.18181818 0.27272727 0.36363636 0.45454545 0.54545455 0.63636364 0.72727273 0.81818182 0.90909091]
23.创建一个大小为10的向量,并排序
>>> Z = np.random.random(10)>>> Z.sort()>>> print Z[ 0.05201207 0.09472773 0.29629011 0.38814523 0.52893897 0.55463854 0.65650212 0.7542114 0.76013247 0.76990988]
24.怎么对一个小数组求和,比np.sum快
>>> Z = np.arange(10)>>> print np.add.reduce(Z)45
24.考虑两个随机数组A,B,检查他们是否相等
>>> A = np.random.randint(0,2,5)>>> B = np.random.randint(0,2,5)>>> equal = np.allclose(A,B)>>> print equalFalse
25.创建一个不可变(只读)数组
>>> Z = np.zeros(10)>>> Z.flags.writeable = False>>> Z[0] = 1Traceback (most recent call last): File "<stdin>", line 1, in <module>ValueError: assignment destination is read-only
26.考虑用一个10*2的矩阵表现笛卡尔坐标系(cartesian coordinates),并把他转换成极坐标系(polar coordinates )
>>> Z = np.random.random((10,2))>>> X, Y = Z[:, 0], Z[:, 1]>>> R = np.sqrt(X**2+Y**2)>>> T = np.arctan2(Y, X)[ 0.90275956 0.18503428 0.87637923 0.38502494 1.25946634 0.44648603 0.85055944 0.35435378 0.30968286 0.8969317 ] [ 0.98835055 0.68139302 0.64921229 1.48097451 0.85664445 0.87587663 1.05603625 1.44893847 1.09883711 0.00878249]
27.创建一个10*2的矩阵,并把最大值替换为0
>>> Z = np.random.random(10)>>> Z[Z.argmax()] = 0>>> print Z[ 0. 0.71516276 0.15794172 0.53201763 0.66267453 0.49826935 0.55888094 0.44170191 0.3600852 0.38956545]
28.创建一个xy坐标系的结构数组,并且覆盖在[0,1]*[1,0]区域内
>>> 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[[(0.0, 0.0) (0.1111111111111111, 0.0) (0.2222222222222222, 0.0) (0.3333333333333333, 0.0)(0.4444444444444444, 0.0) (0.5555555555555556, 0.0) (0.6666666666666666, 0.0) (0.7777777777777777, 0.0) (0.8888888888888888, 0.0) (1.0, 0.0)] [(0.0, 0.1111111111111111) (0.1111111111111111, 0.1111111111111111) (0.2222222222222222, 0.1111111111111111) (0.3333333333333333, 0.1111111111111111) (0.4444444444444444, 0.1111111111111111) (0.5555555555555556, 0.1111111111111111) (0.6666666666666666, 0.1111111111111111) (0.7777777777777777, 0.1111111111111111) (0.8888888888888888, 0.1111111111111111) (1.0, 0.1111111111111111)] [(0.0, 0.2222222222222222) (0.1111111111111111, 0.2222222222222222) (0.2222222222222222, 0.2222222222222222) (0.3333333333333333, 0.2222222222222222) (0.4444444444444444, 0.2222222222222222) (0.5555555555555556, 0.2222222222222222) (0.6666666666666666, 0.2222222222222222) (0.7777777777777777, 0.2222222222222222) (0.8888888888888888, 0.2222222222222222) (1.0, 0.2222222222222222)] [(0.0, 0.3333333333333333) (0.1111111111111111, 0.3333333333333333) (0.2222222222222222, 0.3333333333333333) (0.3333333333333333, 0.3333333333333333) (0.4444444444444444, 0.3333333333333333) (0.5555555555555556, 0.3333333333333333) (0.6666666666666666, 0.3333333333333333) (0.7777777777777777, 0.3333333333333333) (0.8888888888888888, 0.3333333333333333) (1.0, 0.3333333333333333)] [(0.0, 0.4444444444444444) (0.1111111111111111, 0.4444444444444444) (0.2222222222222222, 0.4444444444444444) (0.3333333333333333, 0.4444444444444444) (0.4444444444444444, 0.4444444444444444) (0.5555555555555556, 0.4444444444444444) (0.6666666666666666, 0.4444444444444444) (0.7777777777777777, 0.4444444444444444) (0.8888888888888888, 0.4444444444444444) (1.0, 0.4444444444444444)] [(0.0, 0.5555555555555556) (0.1111111111111111, 0.5555555555555556) (0.2222222222222222, 0.5555555555555556) (0.3333333333333333, 0.5555555555555556) (0.4444444444444444, 0.5555555555555556) (0.5555555555555556, 0.5555555555555556) (0.6666666666666666, 0.5555555555555556) (0.7777777777777777, 0.5555555555555556) (0.8888888888888888, 0.5555555555555556) (1.0, 0.5555555555555556)] [(0.0, 0.6666666666666666) (0.1111111111111111, 0.6666666666666666) (0.2222222222222222, 0.6666666666666666) (0.3333333333333333, 0.6666666666666666) (0.4444444444444444, 0.6666666666666666) (0.5555555555555556, 0.6666666666666666) (0.6666666666666666, 0.6666666666666666) (0.7777777777777777, 0.6666666666666666) (0.8888888888888888, 0.6666666666666666) (1.0, 0.6666666666666666)] [(0.0, 0.7777777777777777) (0.1111111111111111, 0.7777777777777777) (0.2222222222222222, 0.7777777777777777) (0.3333333333333333, 0.7777777777777777) (0.4444444444444444, 0.7777777777777777) (0.5555555555555556, 0.7777777777777777) (0.6666666666666666, 0.7777777777777777) (0.7777777777777777, 0.7777777777777777) (0.8888888888888888, 0.7777777777777777) (1.0, 0.7777777777777777)] [(0.0, 0.8888888888888888) (0.1111111111111111, 0.8888888888888888) (0.2222222222222222, 0.8888888888888888) (0.3333333333333333, 0.8888888888888888) (0.4444444444444444, 0.8888888888888888) (0.5555555555555556, 0.8888888888888888) (0.6666666666666666, 0.8888888888888888) (0.7777777777777777, 0.8888888888888888) (0.8888888888888888, 0.8888888888888888) (1.0, 0.8888888888888888)] [(0.0, 1.0) (0.1111111111111111, 1.0) (0.2222222222222222, 1.0) (0.3333333333333333, 1.0) 0.4444444444444444, 1.0) (0.5555555555555556, 1.0) (0.6666666666666666, 1.0) (0.7777777777777777, 1.0) (0.8888888888888888, 1.0) (1.0, 1.0)]]
- numpy的100个练习(一)
- numpy的用法(一)
- NumPy基础练习(练一遍搞定NumPy)
- numpy 的属性 (一)
- numpy基础练习100题(71-100)
- numpy基础练习100题(01-40)
- numpy基础练习100题(41-70)
- Numpy练习
- NumPy使用(一)
- numpy实用技巧(一)
- NumPy学习(一)
- NumPy doc (一)
- Numpy(一)
- numpy基础(一)
- Numpy学习(一)
- 【NumPy基础】100道numpy练习——Apprentice篇
- 【NumPy基础】100道numpy练习——进阶篇
- 【NumPy基础】100道numpy练习——进阶篇
- BZOJ 3670 [Noi2014]动物园
- 使用keepalive+lvs要注意的问题
- 超级简单的Android Studio jni 实现(无需命令行)
- 数据库设计三大范式
- Session的生命周期
- numpy的100个练习(一)
- javaScript学习笔记——如何在加载完某个标签之后执行一个函数
- 安卓活动的启动方式
- Session的持久化
- Android Studio使用gradle-experimental构建NDK工程(无需Android.mk、Application.mk文件)
- Block用法解析
- Unity 对Camera 属性Clear Flags 的SkyBox/Solid Color/Depth Only深度解析
- String类
- 第二章 链路层