美文网首页程序员数据科学和人工智能技术笔记python机器学习爬虫
数据科学和人工智能技术笔记 一、向量、矩阵和数组

数据科学和人工智能技术笔记 一、向量、矩阵和数组

作者: 布客飞龙 | 来源:发表于2018-11-09 20:57 被阅读40次

    一、向量、矩阵和数组

    作者:Chris Albon

    译者:飞龙

    协议:CC BY-NC-SA 4.0

    转置矩阵或向量

    # 加载库
    import numpy as np
    
    # 创建向量
    vector = np.array([1, 2, 3, 4, 5, 6])
    
    # 创建矩阵
    matrix = np.array([[1, 2, 3],
                       [4, 5, 6],
                       [7, 8, 9]])
    
    # 转置向量
    vector.T
    
    # array([1, 2, 3, 4, 5, 6]) 
    
    # 转置矩阵
    matrix.T
    
    '''
    array([[1, 4, 7],
           [2, 5, 8],
           [3, 6, 9]]) 
    '''
    

    选择数组中的元素

    # 加载库
    import numpy as np
    
    # 创建行向量
    vector = np.array([1, 2, 3, 4, 5, 6])
    
    # 选择第二个元素
    vector[1]
    
    # 2 
    
    # 创建矩阵
    matrix = np.array([[1, 2, 3],
                       [4, 5, 6],
                       [7, 8, 9]])
    
    # 选择第二行第二列
    matrix[1,1]
    
    # 5 
    
    # 创建矩阵
    tensor = np.array([
                        [[[1, 1], [1, 1]], [[2, 2], [2, 2]]],
                        [[[3, 3], [3, 3]], [[4, 4], [4, 4]]]
                      ])
    
    # 选择三个维度的每个的第二个元素
    tensor[1,1,1]
    
    # array([4, 4]) 
    

    数组变形

    # 加载库
    import numpy as np
    
    # 创建 4x3 矩阵
    matrix = np.array([[1, 2, 3],
                       [4, 5, 6],
                       [7, 8, 9],
                       [10, 11, 12]])
    
    # 将矩阵变形为 2x6 矩阵
    matrix.reshape(2, 6)
    
    '''
    array([[ 1,  2,  3,  4,  5,  6],
           [ 7,  8,  9, 10, 11, 12]]) 
    '''
    

    矩阵的逆

    # 加载库
    import numpy as np
    
    # 创建矩阵
    matrix = np.array([[1, 4],
                       [2, 5]])
    
    # 计算矩阵的逆
    np.linalg.inv(matrix)
    
    '''
    array([[-1.66666667,  1.33333333],
           [ 0.66666667, -0.33333333]]) 
    '''
    

    获取矩阵对角线

    # 加载库
    import numpy as np
    
    # 创建矩阵
    matrix = np.array([[1, 2, 3],
                       [4, 5, 6],
                       [7, 8, 9]])
    
    # 返回对角线元素
    matrix.diagonal()
    
    # array([1, 5, 9]) 
    
    # 创建矩阵的迹
    matrix.diagonal().sum()
    
    # 15 
    

    展开矩阵

    # 加载库
    import numpy as np
    
    # 创建矩阵
    matrix = np.array([[1, 2, 3],
                       [4, 5, 6],
                       [7, 8, 9]])
    
    # 展开矩阵
    matrix.flatten()
    
    # array([1, 2, 3, 4, 5, 6, 7, 8, 9]) 
    

    寻找矩阵的秩

    # 加载库
    import numpy as np
    
    # 创建矩阵
    matrix = np.array([[1, 2, 3],
                       [4, 5, 6],
                       [7, 8, 9]])
    
    # 返回矩阵的秩
    np.linalg.matrix_rank(matrix)
    
    # 2 
    

    Find The Maximum And Minimum

    # 加载库
    import numpy as np
    
    # 创建矩阵
    matrix = np.array([[1, 2, 3],
                       [4, 5, 6],
                       [7, 8, 9]])
    
    # 返回最大元素
    np.max(matrix)
    
    # 9 
    
    # 返回最小元素
    np.min(matrix)
    
    # 1 
    
    # 寻找每列的最大元素
    np.max(matrix, axis=0)
    
    # array([7, 8, 9]) 
    
    # 寻找每行的最大元素
    np.max(matrix, axis=1)
    
    # array([3, 6, 9]) 
    

    描述数组

    # 加载库
    import numpy as np
    
    # 创建矩阵
    matrix = np.array([[1, 2, 3, 4],
                       [5, 6, 7, 8],
                       [9, 10, 11, 12]])
    
    # 查看行和列数
    matrix.shape
    
    # (3, 4) 
    
    # 查看元素数(行乘列)
    matrix.size
    
    # 12 
    
    # 查看维数
    matrix.ndim
    
    # 2 
    

    创建向量

    # 加载库
    import numpy as np
    
    # 创建行向量
    vector_row = np.array([1, 2, 3])
    
    # 创建列向量
    vector_column = np.array([[1],
                              [2],
                              [3]])
    

    创建稀疏矩阵

    # Load libraries
    import numpy as np
    from scipy import sparse
    
    # 创建矩阵
    matrix = np.array([[0, 0],
                       [0, 1],
                       [3, 0]])
    
    # 创建压缩稀疏行(CSR)矩阵
    matrix_sparse = sparse.csr_matrix(matrix)
    

    注意:有许多类型的稀疏矩阵。 在上面的示例中,我们使用 CSR,但我们使用的类型应该反映我们的用例。

    创建矩阵

    # 加载库
    import numpy as np
    
    # 创建矩阵
    matrix = np.array([[1, 4],
                       [2, 5]])
    

    注意 NumPy 的mat数据结构对于我们的目的而言不太灵活,应该避免。

    将字典转换为矩阵

    # 加载库
    from sklearn.feature_extraction import DictVectorizer
    
    # 我们的数据字典
    data_dict = [{'Red': 2, 'Blue': 4},
                 {'Red': 4, 'Blue': 3},
                 {'Red': 1, 'Yellow': 2},
                 {'Red': 2, 'Yellow': 2}]
    
    # 创建 DictVectorizer 对象
    dictvectorizer = DictVectorizer(sparse=False)
    
    # 将字典转换为特征矩阵
    features = dictvectorizer.fit_transform(data_dict)
    
    # 查看特征矩阵
    features
    
    '''
    array([[ 4.,  2.,  0.],
           [ 3.,  4.,  0.],
           [ 0.,  1.,  2.],
           [ 0.,  2.,  2.]]) 
    '''
    
    # 查看特征矩阵的列名
    dictvectorizer.get_feature_names()
    
    # ['Blue', 'Red', 'Yellow'] 
    

    计算矩阵的迹

    # 加载库
    import numpy as np
    
    # 创建矩阵
    matrix = np.array([[1, 2, 3],
                       [4, 5, 6],
                       [7, 8, 9]])
    
    # 计算矩阵的迹
    matrix.diagonal().sum()
    
    # 15 
    

    计算矩阵的行列式

    # 加载库
    import numpy as np
    
    # 创建矩阵
    matrix = np.array([[1, 2, 3],
                       [4, 5, 6],
                       [7, 8, 9]])
    
    # 返回矩阵的行列式
    np.linalg.det(matrix)
    
    # -9.5161973539299405e-16 
    

    计算均值、方差和标准差

    # 加载库
    import numpy as np
    
    # 创建矩阵
    matrix = np.array([[1, 2, 3],
                       [4, 5, 6],
                       [7, 8, 9]])
    
    # 返回均值
    np.mean(matrix)
    
    # 5.0 
    
    # 返回方差
    np.var(matrix)
    
    # 6.666666666666667 
    
    # 返回标准差
    np.std(matrix)
    
    # 2.5819888974716112 
    

    计算两个向量的点积

    # 加载库
    import numpy as np
    
    # 创建两个向量
    vector_a = np.array([1,2,3])
    vector_b = np.array([4,5,6])
    
    # 计算点积
    np.dot(vector_a, vector_b)
    
    # 32 
    
    # 计算点积
    vector_a @ vector_b
    
    # 32 
    

    对元素应用操作

    # 加载库
    import numpy as np
    
    # 创建矩阵
    matrix = np.array([[1, 2, 3],
                       [4, 5, 6],
                       [7, 8, 9]])
    
    # 创建加上 100 的函数
    add_100 = lambda i: i + 100
    
    # 创建向量化函数
    vectorized_add_100 = np.vectorize(add_100)
    
    # 对矩阵的所有元素应用函数
    vectorized_add_100(matrix)
    
    '''
    array([[101, 102, 103],
           [104, 105, 106],
           [107, 108, 109]]) 
    '''
    

    矩阵的加和减

    # 加载库
    import numpy as np
    
    # 创建矩阵
    matrix_a = np.array([[1, 1, 1],
                         [1, 1, 1],
                         [1, 1, 2]])
    
    # 创建矩阵
    matrix_b = np.array([[1, 3, 1],
                         [1, 3, 1],
                         [1, 3, 8]])
    
    # 将两个矩阵相加
    np.add(matrix_a, matrix_b)
    
    '''
    array([[ 2,  4,  2],
           [ 2,  4,  2],
           [ 2,  4, 10]]) 
    '''
    
    # 将两个矩阵相减
    np.subtract(matrix_a, matrix_b)
    
    '''
    array([[ 0, -2,  0],
           [ 0, -2,  0],
           [ 0, -2, -6]]) 
    '''
    

    相关文章

      网友评论

        本文标题:数据科学和人工智能技术笔记 一、向量、矩阵和数组

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