• numpy数组(4)-二维数组


    python创建二维 list 的方法是在 list 里存放 list :

    l = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]

    numpy可以直接创建一个二维的数组:

    import numpy as np
    l = np.array([
        [1,2,3,4],
        [5,6,7,8],
        [9,10,11,12],
        [13,14,15,16]
    ])

    numpy二维数组获取某个值:

     [a, b] :  a 表示行索引, b 表示列索引,就是获取第 a 行第 b个元素

    print l[1, 3]
    
    # 8

    也可以截取某一部分,组成一个新的numpy数组:

    print(l[1:3, 2:4])
    # 取第1-3行,第2-4列的数据
    # 结果:
    [[ 7  8]
     [11 12]]

    也可以获取某一行或者某一列,得到一个新的一维的numpy数组:

    print(l[1, :])
    
    # 结果:
    [5 6 7 8]
    print(l[:, 3])
    
    # 结果:
    [4 8 12 16]

    二维numpy数组同样有 mean() ,  std() 等内置方法,计算的是整个数组的所有值,无论在哪行哪列:

    print(l.mean())
    
    # 结果:
    8.5

    二维数组的向量化运算也是一样的:

    a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
    b = np.array([[1, 1, 1], [2, 2, 2], [3, 3, 3]])
    print (a + b)
    
    # 结果:
    [[ 2  3  4]
     [ 6  7  8]
     [10 11 12]]

    一个综合栗子:

    # 假设有如下5个地铁站10天的客流数据
    ridership = np.array([
        [   0,    0,    2,    5,    0],
        [1478, 3877, 3674, 2328, 2539],
        [1613, 4088, 3991, 6461, 2691],
        [1560, 3392, 3826, 4787, 2613],
        [1608, 4802, 3932, 4477, 2705],
        [1576, 3933, 3909, 4979, 2685],
        [  95,  229,  255,  496,  201],
        [   2,    0,    1,   27,    0],
        [1438, 3785, 3589, 4174, 2215],
        [1342, 4043, 4009, 4665, 3033]
    ])

    找出第一天里客流量最多的车站,然后返回这个车站的日平均客流,以及返回所有车站的平均日客流,作为对比:

    def mean_riders_for_max_station(ridership):
        max_index = ridership[0, :].argmax()                     # 获取第一天(第0行)的最大值的索引
        mean_for_max = ridership[:, max_index].mean()            # 通过获取的索引,获取对应列,取平均值
        overall_mean = ridership.mean()
        return (overall_mean, mean_for_max)
        
    print(mean_riders_for_max_station(ridership))    
    
    # 结果:
    (2342.6, 3239.9)

    补充:

    栗子中的 max_index = ridership[0, :].argmax() 也可以写成  max_index = np.argmax(ridership,axis=1)[0] 

    一个是数组的方法,一个是numpy的方法,其中的 axis 表示轴,后面会细讲.

  • 相关阅读:
    磊哥评测之数据库:腾讯云MongoDB vs自建
    一文看透浏览器架构
    必看!如何让你的LBS服务性能提升十倍!
    亿级曝光品牌视频的幕后设定
    Node 框架接入 ELK 实践总结
    大数据与 AI 生态中的开源技术总结
    数据库分片(Database Sharding)详解
    QQ音乐的动效歌词是如何实践的?
    Sql Server之旅——第九站 看公司这些DBA们设计的这些复合索引
    Sql Server之旅——第八站 复合索引和include索引到底有多大区别?
  • 原文地址:https://www.cnblogs.com/liulangmao/p/9236480.html
Copyright © 2020-2023  润新知