學習彙總:點這裏
1.簡單數組操作
>>> import numpy as np
>>> a = np.array([[1.0, 2.0], [3.0, 4.0]])
>>> print(a)
[[ 1. 2.]
[ 3. 4.]]
>>> a.transpose() # 輸出轉置矩陣
array([[ 1., 3.],
[ 2., 4.]])
>>> np.linalg.inv(a) # 輸出逆矩陣
array([[-2. , 1. ],
[ 1.5, -0.5]])
>>> u = np.eye(2) # 構造單位矩陣
>>> u
array([[ 1., 0.],
[ 0., 1.]])
>>> j = np.array([[0.0, -1.0], [1.0, 0.0]])
>>> j @ j # 矩陣積
array([[-1., 0.],
[ 0., -1.]])
>>> np.trace(u) # 對角線上的元素和
2.0
>>> y = np.array([[5.], [7.]])
>>> np.linalg.solve(a, y) # 矩陣積
array([[-3.],
[ 4.]])
>>> np.linalg.eig(j) # 計算矩陣特徵向量
(array([ 0.+1.j, 0.-1.j]), array([[ 0.70710678+0.j , 0.70710678-0.j ],
[ 0.00000000-0.70710678j, 0.00000000+0.70710678j]]))
要更改數組的尺寸,您可以忽略其中一個尺寸,然後將自動推斷尺寸
>>> a = np.arange(30)
>>> a.shape = 2,-1,3 # -1 means "whatever is needed"
>>> a.shape
(2, 5, 3)
>>> a
array([[[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11],
[12, 13, 14]],
[[15, 16, 17],
[18, 19, 20],
[21, 22, 23],
[24, 25, 26],
[27, 28, 29]]])
我們如何從大小相等的行向量列表中構建2D數組?在MATLAB中,這非常容易:如果x和y是兩個相同長度的向量,則只需要do m=[x;y]。在此NumPy的通過功能的工作原理column_stack,dstack,hstack和vstack,視維在堆疊是必須要做的。
>>> x = np.arange(0,10,2)
>>> y = np.arange(5)
>>> m = np.vstack([x,y])
>>> m
array([[0, 2, 4, 6, 8],
[0, 1, 2, 3, 4]])
>>> xy = np.hstack([x,y])
>>> xy
array([0, 2, 4, 6, 8, 0, 1, 2, 3, 4])
2.三角函數
sin(x,/ [,out,where,cast,order,…])三角正弦,元素方式。
cos(x,/ [,out,where,cast,order,…])餘弦元素。
tan(x,/ [,out,where,cast,order,…])按元素計算切線。
arcsin(x,/ [,out,where,cast,order,…])按元素反正弦。
arccos(x,/ [,out,where,cast,order,…])三角反餘弦,元素方式。
arctan(x,/ [,out,where,cast,order,…])三角逆切線,元素方向。
hypot(x1,x2,/ [,out,where,cast,…])給定直角三角形的兩邊,返回其斜邊。
arctan2(x1,x2,/ [,out,where,cast,…])x1/x2正確選擇象限的逐元素反正切。
degrees(x,/ [,out,where,cast,order,…])將角度從弧度轉換爲度。
radians(x,/ [,out,where,cast,order,…])將角度從度轉換爲弧度。
unwrap(p [,不連續,軸])通過將值之間的增量更改爲2 * pi補碼來展開。
deg2rad(x,/ [,out,where,cast,order,…])將角度從度轉換爲弧度。
rad2deg(x,/ [,out,where,cast,order,…])將角度從弧度轉換爲度。
3.舍入函數
numpy.around()這個函數返回四捨五入到所需精度的值。 該函數接受以下參數。
numpy.around(a,decimals)
序號 | 參數及描述 |
---|---|
1 | a 輸入數組 |
2 | decimals 要舍入的小數位數。 默認值爲0。 如果爲負,整數將四捨五入到小數點左側的位置 |
>>>import numpy as np
>>>a = np.array([1.0,5.55, 123, 0.567, 25.532])
>>>a
array([ 1. , 5.55 , 123. , 0.567, 25.532])
>>>np.around(a)
array([ 1., 6., 123., 1., 26.])
>>> np.around(a, decimals = 1)
array([ 1. , 5.6, 123. , 0.6, 25.5])
>>>np.around(a, decimals = -1)
array([ 0., 10., 120., 0., 30.])
numpy.floor()此函數返回不大於輸入參數的最大整數。
即標量x 的下限是最大的整數i ,使得i <= x。 注意在Python中,向下取整總是從 0 舍入。
>>>import numpy as np
>>>a = np.array([-1.7, 1.5, -0.2, 0.6, 10])
>>>a
array([ -1.7, 1.5, -0.2, 0.6, 10. ])
>>>np.floor(a)
array([ -2., 1., -1., 0., 10.])
numpy.ceil()函數返回輸入值的上限,即,標量x的上限是最小的整數i ,使得i> = x。
>>>np.ceil(a)
array([ -1., 2., -0., 1., 10.])
4.算數運算
用於執行算術運算(如add(),subtract(),multiply()和divide())的輸入數組必須具有相同的形狀或符合數組廣播規則。
>>>import numpy as np
>>>a = np.arange(9, dtype = np.float_).reshape(3,3)
>>>a
array([[ 0., 1., 2.],
[ 3., 4., 5.],
[ 6., 7., 8.]])
>>>b = np.array([10,10,10])
>>>b
array([10, 10, 10])
>>>np.add(a,b)
array([[ 10., 11., 12.],
[ 13., 14., 15.],
[ 16., 17., 18.]])
>>>np.subtract(a,b)
array([[-10., -9., -8.],
[ -7., -6., -5.],
[ -4., -3., -2.]])
>>>np.multiply(a,b)
array([[ 0., 10., 20.],
[ 30., 40., 50.],
[ 60., 70., 80.]])
>>>np.divide(a,b)
array([[ 0. , 0.1, 0.2],
[ 0.3, 0.4, 0.5],
[ 0.6, 0.7, 0.8]])
注意:除法需要特別注意。
numpy.reciprocal()此函數返回參數逐元素的倒數,。 由於 Python 處理整數除法的方式,對於絕對值大於 1 的整數元素,結果始終爲 0, 對於整數 0,則發出溢出警告。
>>>import numpy as np
>>>a = np.array([0.25, 1.33, 1, 0, 100])
>>>a
array([ 0.25, 1.33, 1. , 0. , 100. ])
>>>np.reciprocal(a)
D:/PyCharm Community Edition 2019.2.5/hello.py:4: RuntimeWarning: divide by zero encountered in reciprocal
array([ 4. , 0.7518797, 1. ,inf, 0.01])
>>>b = np.array([100], dtype = int)
>>>b
array([100])
>>>np.reciprocal(b)
array([0])
numpy.power()此函數將第一個輸入數組中的元素作爲底數,計算它與第二個輸入數組中相應元素的冪。
>>>import numpy as np
>>>a = np.array([10,100,1000])
>>>a
array([10,100,1000])
>>>np.power(a,2)
array([100, 10000, 1000000])
>>>b = np.array([1,2,3])
>>>b
array([1, 2, 3])
>>>np.power(a,b)
array([10, 10000, 1000000000])
numpy.mod()此函數返回輸入數組中相應元素的除法餘數。 函數numpy.remainder()也產生相同的結果。
>>>import numpy as np
>>>a = np.array([10,20,30])
>>>b = np.array([3,5,7])
>>>a
array([10, 20, 30])
>>>b
array([3, 5, 7])
>>>np.mod(a,b)
array([1, 0, 2])
>>>np.remainder(a,b)
array([1, 0, 2])
以下函數用於對含有複數的數組執行操作。
- numpy.real() 返回複數類型參數的實部。
- numpy.imag() 返回複數類型參數的虛部。
- numpy.conj() 返回通過改變虛部的符號而獲得的共軛複數。
- numpy.angle() 返回複數參數的角度。 函數的參數是degree。 如果爲true,返回的角度以角度制來表示,否則爲以弧度制來表示。
>>>import numpy as np
>>>a = np.array([-5.6j, 0.2j, 11. , 1+1j])
>>>a
array([ 0.-5.6j, 0.+0.2j, 11.+0.j , 1.+1.j ])
>>>np.real(a)
array([ 0., 0., 11., 1.])
>>>np.imag(a)
array([-5.6, 0.2, 0. , 1. ])
>>>np.conj(a)
array([ 0.+5.6j, 0.-0.2j, 11.-0.j , 1.-1.j ])
>>>np.angle(a)
array([-1.57079633, 1.57079633, 0. , 0.78539816])
>>> np.angle(a, deg = True)
array([-90., 90., 0., 45.])