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()绘制日期数据
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值