Numpy&Matplotlib筆記

numpy隨機數

np.random.rand(10, 10)                // 創建指定形狀(示例e爲10行10列)的數組(範圍在0-1之間)
np.random.uniform(0, 100)             // 創建指定範圍內的一個數
np.random.randint(0, 100)             // 創建指定範圍內的一個整數
np.random.normal(1.75, 0.1, (2, 3))   // 給定均值/標準差/維度的正態分佈
np.random.randint(0, 100, (2, 3))     // 矩陣大小(2, 3),取值範圍0-100.

numpy數組操作

  • 數組累加
>>> import numpy as np
>>> s = np.array([[1, 2], [3, 4]])
>>> s.cumsum()   // 數組累加
array([ 1,  3,  6, 10], dtype=int32)
>>> s.cumsum()[-1]
10
  • 數組累乘
>>> s.cumprod()  // 數組累乘
array([ 1,  2,  6, 24], dtype=int32)
>>> s.cumprod()[-1]
24
  • 元素標準差
>>> s.std()  // 所有元素標準差
1.118033988749895
  • 元素求和
>>> s.sum()  // 所有元素求和
10
  • 元素求均值
>>> s.mean()  // 所有元素求均值
2.5
  • 元素最小值
>>> s.min()  // 所有元素最小
1
  • 元素最大值
>>> s.max()  // 所有元素最大
4
  • 最大元素的索引
>>> s.argmax()  // 最大元素的索引
3
  • 最小元素的索引
>>> s.argmin() // 最小元素的索引
0

numpy線性代數

  • 矩陣乘法函數
>>> x = np.array([[1, 2, 3], [4, 5, 6]])
>>> y = np.array([[6, 23], [-1, 7], [8, 9]])
>>> x
array([[1, 2, 3],
       [4, 5, 6]])
>>> y
array([[ 6, 23],
       [-1,  7],
       [ 8,  9]])
>>> x.dot(y)   // 矩陣乘法函數
array([[ 28,  64],
       [ 67, 181]])
  • 以一維數組的形式返回方陣的對角線(或非對角線)元素,或將一維數組轉換爲方陣(非對角線元素爲0)
>>> z = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
>>> z
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
>>> np.diag(z)  // 以一維數組的形式返回方陣的對角線(或非對角線)元素,或將一維數組轉換爲方陣(非對角線元素爲0)
array([1, 5, 9])
>>> np.diag(np.array([1, 5, 9]))
array([[1, 0, 0],
       [0, 5, 0],
       [0, 0, 9]])
  • 計算對角線元素的和
>>> np.trace(z)  // 計算對角線元素的和
15
  • 矩陣行列式
>>> np.linalg.det(z)  // 矩陣行列式
0.0
  • 方陣的特徵值和特徵向量
>>> np.linalg.eig(z)  // 方陣的特徵值和特徵向量
(array([ 1.61168440e+01, -1.11684397e+00, -1.30367773e-15]), array([[-0.23197069, -0.78583024,  0.40824829], [-0.52532209, -0.08675134, -0.81649658],
       [-0.8186735 ,  0.61232756,  0.40824829]]))
  • 方陣的逆
>>> z = np.array([[1, 2, 3], [4, 5, 1], [7, 8, 10]])
>>> np.linalg.inv(z)  // 方陣的逆
array([[-1.27272727, -0.12121212,  0.39393939],
       [ 1.        ,  0.33333333, -0.33333333],
       [ 0.09090909, -0.18181818,  0.09090909]])
  • 方陣的僞逆
>>> np.linalg.pinv(z) // 方陣的僞逆
array([[-1.27272727, -0.12121212,  0.39393939],
       [ 1.        ,  0.33333333, -0.33333333],
       [ 0.09090909, -0.18181818,  0.09090909]])
  • 計算OR分解
>>> np.linalg.qr(z)  // 計算OR分解
(array([[-0.12309149,  0.90453403,  0.40824829],
       [-0.49236596,  0.30151134, -0.81649658],
       [-0.86164044, -0.30151134,  0.40824829]]), array([[-8.12403840e+00, -9.60113630e+00, -9.47804481e+00],
       [ 0.00000000e+00,  9.04534034e-01,  7.10542736e-15],
       [ 0.00000000e+00,  0.00000000e+00,  4.49073120e+00]]))
  • 計算奇異值分解(SVD)
>>> np.linalg.svd(z)  // 計算奇異值分解(SVD)
(array([[-0.22381562,  0.26366043, -0.93829086],
       [-0.34941657, -0.9204243 , -0.17529168],
       [-0.90984319,  0.28862136,  0.29813265]]), array([15.99977546,  3.55970061,  0.57941079]), array([[-0.49940602, -0.59209953, -0.63246483],
       [-0.3926418 , -0.49606132,  0.77443888],
       [ 0.77228624, -0.63509157, -0.01525298]]))
  • 解線性方程組Ax=b,其中A爲一個方陣
>>> A = np.array([[1, 2], [3, 4]])
>>> b = np.array([5, 6])
>>> np.linalg.solve(A, b)  // 解線性方程組Ax=b,其中A爲一個方陣
array([-4. ,  4.5])
  • 計算Ax=b的最小二乘解
>>> np.linalg.lstsq(A, b) // 計算Ax=b的最小二乘解
(array([-4. ,  4.5]), array([], dtype=float64), 2, array([5.4649857 , 0.36596619]))

輸出:

  1. a:數組類型,最小二乘解
  2. residues:殘差之和,b - ax中每一列的平方歐幾里德範數;如果A的秩<A.shape[1]或者>A.shape[0],則返回空數組;如果b是一維的,那麼就是A(1,) 形狀的數組,否則形狀爲(K, )
  3. rank:整型,A的秩
  4. s:數組類型,A的奇異值

matplotlib.pyplot畫圖函數

函數 說明
plt.plot(x, y, fmt, …) 繪製一個座標圖
plt.boxplot(data, notch, position) 繪製一個箱線圖
plt.bar(left, height, width, bottom) 繪製一個條形圖
plt.barh(width, bottom, left, height) 繪製一個橫向條形圖
plt.polar(theta, r) 繪製一個極座標圖
plt.pie(data, explode) 繪製餅圖
plt.psd(x, NFFT=256, pas_to, Fs) 繪製功率譜密度圖
plt.specgram(x, NFFT=256, pas_to, F) 繪製譜圖
plt.cohere(x, y, NFFT=256, Fs) 繪製X-Y的相關性函數
plt.scatter(x, y) 繪製散點圖, 其中,x和y長度相同
plt.step(x, y, where) 繪製步階圖
plt.hist(x, bins, normed) 繪製直方圖
plt.contour(X, Y, Z, N) 繪製等值圖
plt.vlines(x, bins, normed) 繪製垂直圖
plt.stem(x, y, linefmt, markerfmt) 繪製柴火圖
plt.plot_date() 繪製日期數據
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章