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)]]
0 0
原创粉丝点击