numpy 模組學習記錄一
1、 以下測試np.tile()函式的功能(對一維陣列使用)
>>> c =[1,2,3,4]
>>> import numpy as np>>> a = np.array(c)
>>> a
array([1, 2, 3, 4])
>>> np.tile(a,2)
array([1, 2, 3, 4, 1, 2, 3, 4])
>>> np.tile(a,(2,2))
array([[1, 2, 3, 4, 1, 2, 3, 4],
[1, 2, 3, 4, 1, 2, 3, 4]])
>>> np.tile(a,(2,1))
array([[1, 2, 3, 4],
[1, 2, 3, 4]])
>>> np.tile(a,(2,2,2))
array([[[1, 2, 3, 4, 1, 2, 3, 4],
[1, 2, 3, 4, 1, 2, 3, 4]],
[[1, 2, 3, 4, 1, 2, 3, 4],
[1, 2, 3, 4, 1, 2, 3, 4]]])
#也可以對二維陣列使用tile函式
>>> a1 = np.array([[1,2,3],[1,1,1]])
>>> np.tile(a1,(2,1))
array([[1, 2, 3],
[1, 1, 1],
[1, 2, 3],
[1, 1, 1]])
>>> np.tile(a1,(2,2))
array([[1, 2, 3, 1, 2, 3],
[1, 1, 1, 1, 1, 1],
[1, 2, 3, 1, 2, 3],
[1, 1, 1, 1, 1, 1]])
#注意一維陣列的轉置還是一維陣列,因此如果想把(3,)換成(3,1)的話,必須先通過tile(a,(1,1)),之後再轉置一下。
>>> a
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19])
>>> np.tile(a,(1,1))
array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19]])
>>> np.tile(a,1)
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19])
>>> a.T
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19])
>>> np.tile(a,(1,1)).T
array([[ 0],
[ 1],
[ 2],
[ 3],
[ 4],
[ 5],
[ 6],
[ 7],
[ 8],
[ 9],
[10],
[11],
[12],
[13],
[14],
[15],
[16],
[17],
[18],
[19]])
2、建立陣列
- np.array函式可以新增資料型別引數('int64','float64'),也可以使用a = np.array(), b = a.astype('float64')來改變資料型別
- np.zeros(shape), np.ones(shape), np.empty(shape)
- np.eye(N)建立NXN的對角陣(對角線為1,其餘為0)
- np.random.randn(shape)可用來建立正態分佈的隨機數字組成的陣列
- 可以用陣列物件的reshape(shape)方法輕鬆將一維陣列重建shape形狀陣列,也可以使用陣列的flatten()方法輕鬆將陣列變為一維陣列。Flatten()和ravel()用法一樣,區別在於後者是共用記憶體,前者複製
- reshape也有np.reshape(a,(shape),order=‘C/A/F’)的用法,一樣的,此外也可以對多維陣列採用此方法。不限於一維展平陣列
- 不同方法建立等差數列:已知首尾和個數使用np.linspace(首,尾,個數),已知首尾和等差使用np.arange(首,尾,等差)
array([-4.1 , -3.28888889, -2.47777778, -1.66666667, -0.85555556,
-0.04444444, 0.76666667, 1.57777778, 2.38888889, 3.2 ])
np.arange(-4.1,3.2,0.13)
array([-4.1 , -3.97, -3.84, -3.71, -3.58, -3.45, -3.32, -3.19, -3.06,
-2.93, -2.8 , -2.67, -2.54, -2.41, -2.28, -2.15, -2.02, -1.89,
-1.76, -1.63, -1.5 , -1.37, -1.24, -1.11, -0.98, -0.85, -0.72,
-0.59, -0.46, -0.33, -0.2 , -0.07, 0.06, 0.19, 0.32, 0.45,
0.58, 0.71, 0.84, 0.97, 1.1 , 1.23, 1.36, 1.49, 1.62,
1.75, 1.88, 2.01, 2.14, 2.27, 2.4 , 2.53, 2.66, 2.79,
2.92, 3.05, 3.18])
- 不同方法建立等比數列:已知首尾和個數使用np.geomspace(首,尾,個數),已知首尾指數、基和個數使用np.logspace(首指數,尾指數,個數num,基base)
array([4.1 , 3.98863721, 3.88029923, 3.77490388, 3.67237124,
3.57262356, 3.47558519, 3.38118254, 3.28934403, 3.2 ])
>>> np.logspace(-3,6,num=20,base = 3.5)
array([2.33236152e-02, 4.22194245e-02, 7.64238216e-02, 1.38339179e-01,
2.50415747e-01, 4.53292024e-01, 8.20530104e-01, 1.48528899e+00,
2.68860749e+00, 4.86680388e+00, 8.80968312e+00, 1.59469168e+01,
2.88664363e+01, 5.22528056e+01, 9.45858249e+01, 1.71215271e+02,
3.09926663e+02, 5.61016174e+02, 1.01552782e+03, 1.83826562e+03])
>>> np.zeros((2,2,3))
array([[[0., 0., 0.],
[0., 0., 0.]],
[[0., 0., 0.],
[0., 0., 0.]]])
>>> np.ones((2,2),'int8')
array([[1, 1],
[1, 1]], dtype=int8)
>>> np.empty(2,3)
Traceback (most recent call last):
File "<pyshell#22>", line 1, in <module>
np.empty(2,3)
TypeError: data type not understood
>>> np.empty((2,3))
array([[4.24399158e-314, 2.12199579e-314, 2.12199579e-314],
[4.24399158e-314, 2.12199579e-314, 2.12199579e-314]])
>>> np.eye(3)
array([[1., 0., 0.],
[0., 1., 0.],[0., 0., 1.]])
>>> np.random.randn(4,5)
array([[ 1.21889591, 1.17788445, 1.11458146, 0.92636185, -0.63262038],
[-0.98822116, -0.06948648, -1.8468231 , 0.01933874, -1.14357655],
[ 1.12872851, 0.22839521, -0.15845981, -0.73015856, -1.33538379],[ 0.22462804, -0.06954899, 0.03237714, 1.3185228 , -0.927427 ]])
a
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19])
>>> x = a.reshape(4,5)
>>> x
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19]])
>>> x.flatten()
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19])
3、np.arange函式相當於內建函式range的陣列版
>>> np.arange(6)
array([0, 1, 2, 3, 4, 5])
np.arange(0,10,0.5)
array([ 0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5, 5. ,
5.5, 6. , 6.5, 7. , 7.5, 8. , 8.5, 9. , 9.5])