美文网首页
numpy矩阵的维度和运算

numpy矩阵的维度和运算

作者: DancingBUG | 来源:发表于2019-08-18 02:21 被阅读0次

    上一篇是不是太简单,这篇一样很简单,愉快的开始吧~

    当然还是导入numpy,并且来创建一个3行4列的矩阵

    t1 = np.arange(12).reshape(3,4)
    
    t1.size # 矩阵元素的数量
    # 12
    
    t1.dtype # 矩阵内元素的类型
    # dtype('int64')
    

    我们可以给矩阵内的元素类型做一下改变:

    t1 = t1.astype(np.float64) # 给矩阵的元素做类型转换
    '''
    可以看到都变成浮点数啦
    array([[ 0.,  1.,  2.,  3.],
           [ 4.,  5.,  6.,  7.],
           [ 8.,  9., 10., 11.]])
    '''
    t1.dtype
    # dtype('float64')
    
    # 还是变回去吧
    t1 = t1.astype(np.int64) 
    t1
    '''
    array([[ 0,  1,  2,  3],
           [ 4,  5,  6,  7],
           [ 8,  9, 10, 11]])
    '''
    

    上一篇说了升维,现在说一下如何降维:

    # 此处把t1从二维降到一维,不写参数的话,order默认='C',会按照行横着拼接
    t2 = t1.flatten(order='C') 
    t2
    # array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])
    
    # 再看看如果按order='F'就是按列竖着拼接
    t2 = t1.flatten(order='F') 
    t2
    # array([ 0,  4,  8,  1,  5,  9,  2,  6, 10,  3,  7, 11])
    

    两个相同的矩阵可以和矩阵做运算吗?比如让t1 * t1, 此时的t1是:

    '''
    array([[ 0,  1,  2,  3],
           [ 4,  5,  6,  7],
           [ 8,  9, 10, 11]])
    '''
    t2 = t1 * t1
    t2
    '''
    array([[  0,   1,   4,   9],
           [ 16,  25,  36,  49],
           [ 64,  81, 100, 121]])
    '''
    # 可以看出,两个矩阵自动按照行列相同的对应位置相乘了,神奇吧?
    

    最后告诉大家,矩阵的运算共有4种。第一种是上篇提到的和单个数字做运算,第二种是刚才实现的shape相同的矩阵互相运算,第三种就是单列、行数相同,第四种是单行、列数相同,举例如下:

    # 创建一个单行4列的矩阵
    t2 = np.arange(4).reshape(1,4) 
    t2
    # array([[0, 1, 2, 3]])
    
    '''
    此时的t1:
    array([[ 0,  1,  2,  3],
           [ 4,  5,  6,  7],
           [ 8,  9, 10, 11]])
    '''
    
    t1 + t2 
    # t2只有一行四列, 但和三行四列的t1相加后, 是t2的每行元素都和t1的元素对应相加了
    '''
    array([[ 0,  2,  4,  6],
           [ 4,  6,  8, 10],
           [ 8, 10, 12, 14]])
    '''
    
    # 最后来个3行单列的矩阵
    t2 = np.arange(3).reshape(3,1) 
    '''
    array([[0],
           [1],
           [2]])
    '''
    
    # 这次是t2分别和t1的每一列相乘
    t1 * t2 
    '''
    array([[ 0,  0,  0,  0],
           [ 4,  5,  6,  7],
           [16, 18, 20, 22]])
    '''
    # 相信大家看出来了吧?
    

    相关文章

      网友评论

          本文标题:numpy矩阵的维度和运算

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