zoukankan      html  css  js  c++  java
  • Numpy01

    Numpy数组创建


    np.array(list/tuple)  # 接收一切序列型对象,如list列表、tuple元组等
    

    数组 (array) 是相同类型的元素 (element) 的集合所组成数据结构 (data structure)。

    numpy 数组中的元素用的最多是「数值型」元素

    数组常见属性
    type:数组类型,numpy.ndarray
    dtype:数组元素类型,是双精度浮点 (和 type 区分)
    ndim:维度个数
    len():数组长度为 5 (注意这个说法只对一维数组有意义)
    size:数组元素个数为 5
    shape:数组形状,即每个维度的元素个数 (用元组来表示),只有一维,元素个数为 5,写成元组形式是 (5,)
    
    class1 = np.array([89, 96, 45, 59, 98])
    class2 = np.array([True, 18, 177.5, '张三']) # 只要有一个是字符串,其他都是字符串
    
    特征和维度
    维度:我们观察或认知事物的角度
    axis,中文叫「轴」,一个数组是多少维度就有多少根轴。由于 Python 计数都是从 0 开始的,那么
    
    第 1 维度 = axis 0
    第 2 维度 = axis 1
    第 3 维度 = axis 2
    
    n维数组,一个「标量」或「元组类型的形状」
    

      

    数组查询介绍

    • 类list查询
    • ndarray数组查询方法,推荐
    class3 = np.array([
        [
            [True,80,177.7,'张小明'],
            [False,99,164.5,'李丽'],
            [True,59,158,'王华']
        ],
        [
            [True,95,178,'张小明'],
            [False,99,164.5,'李丽2'],
            [True,39,178,'王华2']
        ],
    ])
    class12[1][1][3]
    class12[1, 1, 3]  # ndarray数组查询方法,推荐
    

      

    ndarray数组自动创建

    为了实现某些运算,需要快速构造符合要求的大数组

    Numpy函数生成的数组,如不指定类型几乎全为浮点型(arange除外,它是整型),因为科学计算中测量值,例如温度、长度,都是浮点数

    常用函数

    • 序列:np.arange()
    • 自定义均匀分布:np.random.uniform()
    • 自定义均匀分布、整数:np.random.randint()
    • 自定义正态分布:np.random.normal()
    生成序列
    np.arange(10)  # 序列,默认起始值0
    np.arange(5, 15)  # 起始值,结束值
    np.arange(5, 15, 2)  # 起始值,结束值,步长
    
    # 改变数据的形状
    np.arange(24)
    np.arange(24).reshape(3, 8)
    np.arange(24).reshape(2, 3, 4)
    
    在指定的间隔内返回均匀间隔的数字
    np.linspace(1,10,5) #(start,stop,num=50,endpoint=True,retstep=False,dtype=None)
    不包含结束值
    
    # 绘制一条直线
    # 一次函数,y = a * x + b
    
    a = -5
    b = -8
    x = np.arange(5)
    y = a * x + b
    
    plt.plot(x, y)
    
    ##############################
    
    # 绘制曲线
    # 二次函数:y = a * x ** 2 + b * x + c
    
    a = 3
    b = 5
    c = 8
    # x = np.arange(-5, 5)  # 非线性函数要平滑需不断增大值范围,导致图像不平衡
    x = np.linspace(-5, 5, 500) # 固定坐标轴范围,同时图像更平滑
    y = a * x ** 2 + b * x + c
    
    # plt.figure(figsize=(18, 10))
    plt.plot(x, y)
    

    伪随机数:计算机生成的随机数是伪随机数

    均匀分布的随机数(0-1之间)

    np.random.rand(10)
    np.random.rand(2, 3, 4)
    

    带起始、结束值的均匀分布随机数  

    np.random.uniform(10, 50, 10)
    np.random.uniform(10, 50, (3, 2))
    
    x = np.random.uniform(10, 50, 1000)
    plt.hist(
        x,
        50,
        edgecolor='white',
    )
    plt.show()
    

    均匀分布随机数:整数

    # 最常用
    np.random.randint(10, 100, (3, 2))
    # 随机数种子,固定随机数
    np.random.seed(1)  # 随机数种子
    np.random.randint(10, 100, (3, 2))
    

      

    正态分布

    自然界和人类社会的数据分布一般是正态分布

    • 彼此无关的大量数据(不稀缺资源),最终会形成正态分布
    • 彼此相关的大量数据(稀缺资源),最终会形成指数分布

    身高,财产,考试成绩,入学率

    当一组测量数据服从正态分布时,

    • 约68.26%的测量值落在平均值处正负一个标准差的区间内
    • 约95.44%的测量值将落在平均值处正负两个标准差的区间内
    • 约99.73%的值将落在平均值处正负三个标准差的区间内
    # 标准正态分布随机数
    # 浮点数,平均值0,标准差1
    
    np.random.randn(10)
    np.random.randn(2, 3, 4)
    
    # 自定义正态分布,分布中心是loc(概率分布的均值),标准差是scale,形状是size
    np.random.normal(50, 1, (3, 5))
    

    指数分布(幂率分布  

    x = np.random.exponential(100, 1000)
    
    plt.hist(
        x,
        50,
        edgecolor='white',
    )
    plt.show()
    

    中国青年男性身高分析

    自定义正态分布
    
    平均值1.68,标准差0.1  1.68+or-0.1
    
    man = np.round(np.random.normal(1.68, 0.1, 200000), 2)
    plt.figure(figsize=(18, 8))
    
    plt.hist(
        man,
        30, 
        edgecolor='white',
    )
    plt.xticks(np.arange(12, 21) / 10)
    plt.show()
    

      

    本文为原创文章,转载请标明出处
  • 相关阅读:
    数据库30条规范
    数据库索引原理
    HashMap的实现原理
    Google 和 Baidu 常用的搜索技巧
    Arrays工具类十大常用方法
    fastjson将json格式null转化空串
    SolrCloud的介绍
    网页背景图片自适应浏览器大小
    addlinkedserver
    常用
  • 原文地址:https://www.cnblogs.com/harden13/p/14136421.html
Copyright © 2011-2022 走看看