美文网首页
人工智能之数学(四) ------ 矩阵numpy操作

人工智能之数学(四) ------ 矩阵numpy操作

作者: 千喜Ya | 来源:发表于2019-08-08 22:35 被阅读0次

    菜鸟教程 NumPy 教程


    一.基本概念

    NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
    NumPy 通常与 SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用, 这种组合广泛用于替代 MatLab,是一个强大的科学计算环境,有助于我们通过 Python 学习数据科学或者机器学习。

    二. Ndarray

    实例 1 :

    import numpy as np 
    a = np.array([1,2,3])  
    print (a)
    

    输出结果如下:

    [1, 2, 3]
    

    实例 2 :

    # 多于一个维度  
    import numpy as np 
    a = np.array([[1,  2],  [3,  4]])  
    print (a)
    

    输出结果如下:

    [[1, 2] 
     [3, 4]]
    

    实例 3 :

    # 最小维度  
    import numpy as np 
    a = np.array([1,  2,  3,4,5], ndmin =  2)  
    print (a)
    

    输出如下:

    [[1, 2, 3, 4, 5]]
    

    实例 4 :

    # dtype 参数  
    import numpy as np 
    a = np.array([1,  2,  3], dtype = complex)  
    print (a)
    

    输出结果如下:

    [ 1.+0.j,  2.+0.j,  3.+0.j]
    

    三.矩阵库(Matrix)

    全零方阵 : ndim : 维度(2维) shape : 形状(3,3) 2*4全1矩阵: 元素是随机浮点数3*4矩阵 : 元素是0-5之间的整数(半开区间,不包含5)2*3矩阵 生成单位矩阵(eye(n,k)) : n是维数,k是对角线的位置 生成对角矩阵(diag(a,k)) : 改变形状(reshape) : 要注意能不能整除 np.arange : 生成2 * 3 * 4,范围是0-23的数组

    slice(切片)与index :

    一维数组
    arr[3:8] = -2 : 更改3-8的数组元素 多维数组 :

    arr_2[0,1] : 深度是0的第二行
    arr_2[0,2,1:] : 深度是0的第三行的第二个数到最后一个数

    arr_2[:,:,1] : 第二列 arr_2[0,0:2,1:] : 深度为0,第一 - 二行,第二列到最后一列 arr_2[0,::2,::2] : 深度为0,隔一行取一行,隔一列取一列 找特定的元素 : 维数为3,中间3个数组第一个连起来是0的坐标,第二个数连起来是2的坐标,第三个数连起来是8的坐标,第四个数连起来是10的坐标

    也可以使用np.ix_: 交叉相乘的,元素个数为122,第一个[0]是深度,第二个[0,2]是行数,第三个[0,2]是列数,但是注意输出形状为 : (1,2,2)

    合并np.vstack(v : 垂直,垂直方向合并) : 第一个轴不同之外,其他要相同,V是指在垂直轴(第一个轴)上(列)要相同
    列数要相同 : arr_5: arr_6: 合并结果: np.hstack(h):第二个轴不同之外,其他轴要相同

    np.dstack() : 第三个轴不同之外,其他轴要相同(所以三维以上才能用)

    np.concatenate : 更多轴合并,比如想要第5轴合并,axis以0开始

    如果想要将维度相同,形状相同的矩阵在深度上合并,首先需要对矩阵扩充维度,比如arr_10是3 * 2的矩阵,要扩充成1 * 3 * 2的矩阵 :
    np.expand_dims(arr_10,axis = 0)
    np.expand_dims(arr_11,axis = 0)
    然后用np.concatenate在深度上进行叠加 :
    np.concatenate((arr_10,arr_11),arix = 0)
    最后得到一个2 * 3 * 2的矩阵

    广播机制broadcasting : 方便不同shape下的数组的数学运算

    1.两个数组进行加减时,维度不相同的时候要向维度较大的看齐,比如3 *3 *4 + 4,首先用np.expand_dims将4扩充到1 * 1 * 4(在前面扩充,内部做了这个机制)
    2.这个就很好理解了,7 * 1 * 8 + 1 * 5 * 1 = 7 * 5 * 8数组

    1. 3 * 3 * 4 + 1 * 1 * 4 3对1 ,4对4因此可以计算
      7 * 2 * 8 + 7 * 5 * 8就不行,因为2*5既没有1,又不相等,就不能计算
    案例: 计算:

    相关文章

      网友评论

          本文标题:人工智能之数学(四) ------ 矩阵numpy操作

          本文链接:https://www.haomeiwen.com/subject/xpmadctx.html