numpy的100個練習(一)
阿新 • • 發佈:2019-01-29
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] = 1
print 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, Zmax
0.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.nan
np.nan == np.nan
np.inf > np.nan
np.nan - np.nan
0.3 == 3 * 0.1
>>> print 0*np.nan,np.nan==np.nan,np.inf>np.nan,np.nan-np.nan,0.3==3*0.1
nan 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 equal
False
25.建立一個不可變(只讀)陣列
>>> 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
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)]]