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]))
輸出:
- a:數組類型,最小二乘解
- residues:殘差之和,
b - ax
中每一列的平方歐幾里德範數;如果A的秩<A.shape[1]或者>A.shape[0],則返回空數組;如果b是一維的,那麼就是A(1,) 形狀的數組,否則形狀爲(K, ) - rank:整型,A的秩
- 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() | 繪製日期數據 |