zoukankan      html  css  js  c++  java
  • numpy巩固

    导包
    import numpy as np
    创建二维数组
    x = np.matrix([[1,2,3],[4,5,6]])
    创建一维数组
    y = np.matrix([1,2,3,4,5,6])
    x 的第二行第二列元素
    x[1,1]
    矩阵的乘法
    x*y
    # 相关系数矩阵,可使用在列表元素数组矩阵
    # 负相关
    np.corrcoef([1,2,3],[8,5,4])
    '''
    array([[ 1.        , -0.96076892],
           [-0.96076892,  1.        ]])
    '''
    # 正相关
    np.corrcoef([1,2,3],[4,5,7])
    '''
    array([[1.        , 0.98198051],
           [0.98198051, 1.        ]])
    '''
    矩阵的方差
    np.cov([1,1,1,1,1])
    矩阵的标准差
    np.std([1,1,1,1,1])
    垂直堆叠矩阵
    z = np.vstack((x,y))
    矩阵的协方差
    np.cov(z)
    np.cov(x,y)
    标准差
    np.std(z)
    列向标准差
    np.std(z,axis = 1)
    方差
    np.cov(x)
    特征值和特征向量
    A = np.array([[1,-3,3],[3,-5,3],[6,-6,4]])
    e,v = np.linalg.eig(A)
    e 为特征值, v 为特征向量
    矩阵与特征向量的乘积
    np.dot(A,v)
    特征值与特征向量的乘积
    e * v
    验证两个乘积是否相等
    np.isclose(np.dot(A,v),(e * v))
    行列式 |A - λE| 的值应为 0
    np.linalg.det(A-np.eye(3,3)*e)
    逆矩阵
    y = np.linalg.inv(x)
    矩阵的乘法(注意先后顺序)
    x * y
    '''
    matrix([[ 1.00000000e+00,  5.55111512e-17,  1.38777878e-17],
            [ 5.55111512e-17,  1.00000000e+00,  2.77555756e-17],
            [ 1.77635684e-15, -8.88178420e-16,  1.00000000e+00]])
    '''
    y * x
    '''
    matrix([[ 1.00000000e+00, -1.11022302e-16,  0.00000000e+00],
            [ 8.32667268e-17,  1.00000000e+00,  2.22044605e-16],
            [ 6.93889390e-17,  0.00000000e+00,  1.00000000e+00]])
    '''
    求解线性方程组
    a = np.array([[3,1],[1,2]])
    b = np.array([9,8])
    x = np.linalg.solve(a,b)
    
    
    最小二乘解:返回解,余项,a 的秩,a 的奇异值
    np.linalg.lstsq(a,b)
    # (array([2., 3.]), array([], dtype=float64), 2, array([3.61803399, 1.38196601]))
    计算向量和矩阵的范数
    x = np.matrix([[1,2],[3,-4]])
    
    np.linalg.norm(x)
    # 5.477225575051661
    
    np.linalg.norm(x,-2)
    # 1.9543950758485487
    
    np.linalg.norm(x,-1)
    # 4.0
    
    np.linalg.norm(x,1)
    # 6.0
    
    np.linalg.norm([1,2,0,3,4,0],0)
    # 4.0
    
    np.linalg.norm([1,2,0,3,4,0],2)
    # 5.477225575051661
    奇异值分解
    a = np.matrix([[1,2,3],[4,5,6],[7,8,9]])
    
    u,s,v = np.linalg.svd(a)
    
    u
    '''
    matrix([[-0.21483724,  0.88723069,  0.40824829],
            [-0.52058739,  0.24964395, -0.81649658],
            [-0.82633754, -0.38794278,  0.40824829]])
    '''
    s
    '''
    array([1.68481034e+01, 1.06836951e+00, 4.41842475e-16])
    '''
    v
    '''
    matrix([[-0.47967118, -0.57236779, -0.66506441],
            [-0.77669099, -0.07568647,  0.62531805],
            [-0.40824829,  0.81649658, -0.40824829]])
    '''
    
    # 验证
    u * np.diag(s) * v
    '''
    matrix([[1., 2., 3.],
            [4., 5., 6.],
            [7., 8., 9.]])
    '''

    实现矩阵的转置
    x.T
    元素平均值
    x.mean()
    纵向平均值
    x.mean(axis = 0)
    横向平均值
    x.mean(axis = 1)
    所有元素之和
    x.sum()
    横向最大值
    x.max(axis = 1)
    横向最大值的索引下标
    x.argmax(axis = 1)
    对角线元素
    x.diagonal()
    非零元素下标
    x.nonzero()
    创建数组
    
    np.array([1,2,3,4])
    np.array((1,2,3,4))
    np.array(range(4)) # 不包含终止数字
    # array([0, 1, 2, 3])
    # 使用 arange(初始位置=0,末尾,步长=1)
    np.arange(1,8,2)
    # array([1, 3, 5, 7])
    生成等差数组,endpoint 为 True 则包含末尾数字
    np.linspace(1,3,4,endpoint=False)
    # array([1. , 1.5, 2. , 2.5])
    np.linspace(1,3,4,endpoint=True)
    # array([1.        , 1.66666667, 2.33333333, 3.        ])
    创建全为零的一维数组
    np.zeros(3)
    创建全为一的一维数组
    np.ones(4)
    np.linspace(1,3,4)
    # array([1.        , 1.66666667, 2.33333333, 3.        ])
    np.logspace(起始数字,终止数字,数字个数,base = 10) 对数数组
    np.logspace(1,3,4)
    # 相当于 10 的 linspace(1,3,4) 次方
    # array([  10.        ,   46.41588834,  215.443469  , 1000.        ])
    
    
    
    np.logspace(1,3,4,base = 2)
    # 2 的 linspace(1,3,4) 次方
    # array([2.       , 3.1748021, 5.0396842, 8.       ])
    创建二维数组(列表嵌套列表)
    np.array([[1,2,3],[4,5,6]])
    # 创建全为零的二维数组
    # 两行两列
    np.zeros((2,2))
    三行两列
    np.zeros((3,2))
    # 创建一个单位数组
    np.identity(3)
    
    '''
    array([[1., 0., 0.],
           [0., 1., 0.],
           [0., 0., 1.]])
    '''
    创建一个对角矩阵,(参数为对角线上的数字)
    np.diag((1,2,3))
    
    '''
    array([[1, 0, 0],
           [0, 2, 0],
           [0, 0, 3]])
    '''
    第一行元素
    n[0]
    第一行第三列元素
    n[0,2]
    第一行和第二行的元素
    n[[0,1]]
    第一行第三列,第三行第二列,第二行第一列
    n[[0,2,1],[2,1,0]]
    将数组倒序
    a[::-1]
    步长为 2
    a[::2]
    从 0 到 4 的元素
    a[:5]
    变换 c 的矩阵行和列
    
    c = np.arange(16)
    # array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15])
    
    c.shape = 4,4
    '''
    array([[ 0,  1,  2,  3],
           [ 4,  5,  6,  7],
           [ 8,  9, 10, 11],
           [12, 13, 14, 15]])
    '''
    第一行,第三个元素到第五个元素(如果没有则输出到末尾截止)
    c[0,2:5]
    第二行元素
    c[1]
    第三行到第六行,第三列到第六列
    c[2:5,2:5]
    第二行第三列元素和第三行第四列元素
    c[[1,2],[2,3]]
    第一行和第三行的第二列到第三列的元素
    c[[0,2],1:3]
    第一列和第三列的所有横行元素
    c[:,[0,2]]
    第三列所有元素
    c[:,2]
    第二行和第四行的所有元素
    c[[1,3]]
    第一行的第二列,第四列元素,第四行的第二列,第四列元素
    c[[0,3]][:,[1,3]]
    使用 * 进行相乘
    x*2
    使用 / 进行相除
    x / 2
    2 / x
    使用 // 进行整除
    x//2
    10//x
    使用 ** 进行幂运算
    x**3
    2 ** x
    使用 + 进行相加
    x + 2
    使用 % 进行取模
    x % 3
    使用 + 进行相加
    np.array([1,2,3,4]) + np.array([11,22,33,44])
    
    
    np.array([1,2,3,4]) + np.array([3])
    # array([4, 5, 6, 7])
    数组的内积运算(对应位置上元素相乘)
    np.dot(x,y)
    sum(x*y)
    将数组中大于 0.5 的元素显示
    n[n>0.5]
    找到数组中 0.05 ~ 0.4 的元素总数
    sum((n > 0.05)&(n < 0.4))
    是否都大于 0.2
    np.all(n > 0.2)
    是否有元素小于 0.1
    np.any(n < 0.1)
    在 a 中是否有大于 b 的元素
    a > b
    # array([False,  True, False])
    
    # 在 a 中是否有等于 b 的元素
    a == b
    # array([False, False,  True])
    
    # 显示 a 中 a 的元素等于 b 的元素
    a[a == b]
    # array([7])
    显示 a 中的偶数且小于 5 的元素
    a[(a%2 == 0) & (a < 5)]
    生成一个随机数组
    np.random.randint(0,6,3)
    生成一个随机数组(二维数组)
    np.random.randint(0,6,(3,3))
    生成十个随机数在[0,1)之间
    np.random.rand(10)
    '''
    array([0.9283789 , 0.43515554, 0.27117021, 0.94829333, 0.31733981,
           0.42314939, 0.81838647, 0.39091899, 0.33571004, 0.90240897])
    '''
    从标准正态分布中随机抽选出3个数
    np.random.standard_normal(3)
    返回三页四行两列的标准正态分布数
    np.random.standard_normal((3,4,2))
    x = np.arange(8)
    在数组尾部追加一个元素
    np.append(x,10)
    在数组尾部追加多个元素
    np.append(x,[15,16,17])
    使用 数组下标修改元素的值
    x[0] = 99
    在指定位置插入数据
    np.insert(x,0,54)
    创建一个多维数组
    x = np.array([[1,2,3],[11,22,33],[111,222,333]])
    
    修改第 0 行第 2 列的元素值
    x[0,2] = 9
    行数大于等于 1 的,列数大于等于 1 的置为 1
    x[1:,1:] = 1
    # 同时修改多个元素值
    x[1:,1:] = [7,8]
    '''
    array([[  1,   2,   9],
           [ 11,   7,   8],
           [111,   7,   8]])
    '''
    x[1:,1:] = [[7,8],[9,10]]
    '''
    array([[  1,   2,   9],
           [ 11,   7,   8],
           [111,   9,  10]])
    '''
    查看数组的大小
    n.size
    将数组分为两行五列
    n.shape = 2,5
    显示数组的维度
    n.shape
    设置数组的维度,-1 表示自动计算
    n.shape = 5,-1
    将新数组设置为调用数组的两行五列并返回
    x = n.reshape(2,5)
    x = np.arange(5)
    # 将数组设置为两行,没有数的设置为 0
    x.resize((2,10))
    '''
    array([[0, 1, 2, 3, 4, 0, 0, 0, 0, 0],
           [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])
    '''
    
    
    # 将 x 数组的两行五列形式显示,不改变 x 的值
    np.resize(x,(2,5))
    '''
    array([[0, 1, 2, 3, 4],
           [0, 0, 0, 0, 0]])
    '''
    x = np.array([1,4,5,2])
    # array([1, 4, 5, 2])
    
    # 返回排序后元素的原下标
    np.argsort(x)
    # array([0, 3, 1, 2], dtype=int64)
    输出最大值的下标
    x.argmax( )
    输出最小值的下标
    x.argmin( )
    对数组进行排序
    x.sort( )
    每个数组元素对应的正弦值
    np.sin(x)
    每个数组元素对应的余弦值
    np.cos(x)
    对参数进行四舍五入
    np.round(np.cos(x))
    对参数进行上入整数 3.3->4
    np.ceil(x/3)
    # 分段函数
    x = np.random.randint(0,10,size=(1,10))
    # array([[0, 3, 6, 7, 9, 4, 9, 8, 1, 8]])
    
    # 大于 4 的置为 0
    np.where(x > 4,0,1)
    # array([[1, 1, 0, 0, 0, 1, 0, 0, 1, 0]])
    
    # 小于 4 的乘 2 ,大于 7 的乘3
    np.piecewise(x,[x<4,x>7],[lambda x:x*2,lambda x:x*3])
    # array([[ 0,  6,  0,  0, 27,  0, 27, 24,  2, 24]])

    2020-06-03

    • 添加到短语集
       
      拷贝
      • 没有此单词集:英语 -> ...
         
      • 创建新的单词集...
  • 相关阅读:
    JavaScript 弹出层,背景变暗
    DataGridView常见用法和FAQ汇总
    将visual studio 2005 SP1补丁整合到安装文件
    非常经典的网络蜘蛛示例
    asp.net画曲线图(折线图)
    Asp.net中基类页的设计和使用
    使用 Visual C# .NET 向 Excel 工作簿传输数据
    CSS布局:让页脚始终保持底部的方法
    WinForm开发,窗体显示和窗体传值相关知识总结
    asp.net Urlrewriter在虚拟主机上的使用方法
  • 原文地址:https://www.cnblogs.com/hany-postq473111315/p/13035346.html
Copyright © 2011-2022 走看看