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() | 绘制日期数据 |