• numpy生成0和1数组方法,从已有数组生成新数组方法、生成固定范围内数组、生成随机数组,绘制指定均值和标准差正态分布图、均匀分布图绘制


    一、生成0和1数组

    • np.ones(shape, dtype):shape为要生成的数组的维度,dtype为数组内元素类型
    • np.ones_like(a, dtype):生成与a同维度的数组
    • np.zeros(shape, dtype)
    • np.zeros_like(a, dtype)

    代码如下

    1. one = np.ones([3,4])
    2. one
    3. ------------------------------------
    4. import numpy as np
    5. one = np.ones([3,4])
    6. np.ones_like(one, dtype=np.string_)
    7. ------------------------------------
    8. import numpy as np
    9. one = np.ones([3,4])
    10. np.zeros_like(one, dtype=np.float32)

    演示结果如下 

    二、从现有数组生成

    • np.array(object, dtype):深拷贝,从现有数组object中创建
    • np.asarray(a, dtype):浅拷贝,相当于索引形式,并未创建新数组

    演示如下

    三、生成固定范围内数组

    • np.linspace (start, stop, num, endpoint):创建指定数量的等差数组 
      • start:序列的起始值
      • stop:序列的终止值
      • num:要生成的等间隔样例数量,默认为50
      • endpoint:序列中是否包含stop值,默认为ture
    • np.arange(start,stop, step, dtype):创建指定步长的等差数组
      • start:序列的起始值
      • stop:序列的终止值,不包含stop值
      • step:步长,默认为1
      • dtype:数组类型
    • np.logspace( start, stop, num=50, endpoint=True, base=10.0, dtype=None):创建等比数列
      • start:序列的起始值
      • stop:序列的终止值
      • num:要生成的等比数列数量,默认为50
      • endpoint:序列中是否包含stop值,默认为ture
      • base:默认生成以10为基低的等比数列
      • dtype:数组类型

    举例演示如下

    1. np.linspace(0, 100, 5) # 数量为5
    2. np.arange(0, 50, 5) # 步长为5
    3. np.logspace(1, 10, 10, base=2) # 2分别取1-10的整数的幂,(10-1)+1=10个数
    4. np.logspace(2, 7, 6, base=3) # 3分别取2,3,4,5,6,7共6个数的幂,(7-2)+1=6个数
    5. np.logspace(2, 4, 3) # 默认基为10,即10取2,3,4的幂,个数为3=(4-2)+1

    四、生成随机数组

    使用模块:np.random()

    1. 正态分布

    正态分布:N(μ,\sigma ^{2} ),μ为均值,\sigma ^{2}为方差,方差\sigma ^{2}开根号即为标准差,μ决定了其对称位置,\sigma ^{2}决定了分布的幅度,方差和标准差用来衡量数据的离散程度

    正态分布创建方式

    • np.random.randn(d0, d1, …, dn):用于生成标准正态分布随机数,d0, d1, …, dn为数组的维度,从标准正态分布中返回一个或多个样本值
    • np.random.normal(loc=0.0scale=1.0size=None):生成均值为loc,标准差为scale的正态分布数据
      • loc:均值,float类型,对应着整个分布的中心(对称轴)
      • scale:标准差,float类型,对应于分布的宽度,scale越大越矮胖,scale越小越瘦高
      • size:int或元组类型,输出的shape,默认为None,只输出一个值
    • np.random.standard_normal(size=None):返回指定形状的标准正态分布的数组
    1. np.random.randn(2, 2 ,3) # 从标准正态分布中返回指定维数样本值
    2. np.random.normal(2, 0.5, 10) # 指定均值、标准差
    3. np.random.standard_normal(10) # 标准正态

    结果如下 

    2.正态分布作图 

     绘制指定均值和标准差正态分布图

    1. import numpy as np
    2. import matplotlib.pyplot as plt
    3. # 生成均值为2,标准差为0.5的正态分布数据,100000000个
    4. a = np.random.normal(2, 0.5, 100000000)
    5. # 创建画布
    6. plt.figure(figsize=(8, 4), dpi=100)
    7. # 绘制直方图
    8. plt.hist(a, 1000, color='y')
    9. # 显示图像
    10. plt.show()

    输出如图

    标准正态分布图

    1. import numpy as np
    2. import matplotlib.pyplot as plt
    3. # 标准正态分布
    4. a = np.random.standard_normal(200000)
    5. # 创建画布
    6. plt.figure(figsize=(8, 4), dpi=100)
    7. # 绘制直方图
    8. plt.hist(a, 1000, color='y')
    9. # 显示图像
    10. plt.show()

     输出如图

     3.均匀分布

    • np.random.rand(d0, d1, …, dn):用于生成均匀分布的随机数,d0, d1, …, dn为数组的维度,返回[0,1)内的一组均匀分布的数
    • np.random.randint(low[, high, size, dtype]):用于生成随机整数,从一个均匀分布中随机采样,生成一个整数或N维整数数组
      • 取数范围:若high不为None时,取[low,high)之间随机整数,否则取值[0,low)之间随机整数
      • dtype:数据类型
      • size:数据个数或形状
      • high:最大值
      • low:最小值
    • np.random.random([size]):用于生成[0,1)范围内的随机数,size为随机数的个数或形状
    • np.random.choice(a, size=None, replace=True, p=None):用于从a中随机选择指定数据
      • 数组p:与数组a相对应,表示取数组a中每个元素的概率,默认为选取每个元素的概率相同
      • replace: True表示可以取相同数字,False表示不可以取相同数字
      • 从a(一维数组)中随机抽取数字,并组成指定大小(size)的数组
    • np.random.uniform(low=0.0high=1.0size=None):从一个均匀分布[low,high)中随机采样
      • low: 采样下界,float类型,默认为0
      • high: 采样上界,float类型,默认为1
      • size: 输出样本数目,为int或元组(tuple)类型,如size=(a,b,c)指定为三维数组,输出a×b×c个样本,缺省时输出1个值
      • 返回值:ndarray类型,其形状和参数size中描述一致

    演练代码如下

    1. np.random.rand(2, 2, 3) # # 从均匀分布中返回指定维数样本值,范围为[0,1),三维数组
    2. np.random.randint(-2, 2, 10) # 生成[-2, 2)范围内的随机整数
    3. np.random.random(10) # 生成[0, 1)范围内的随机数
    4. a = np.random.randint(-20, 20, 10)
    5. np.random.choice(a,10,replace=False) # 从a中随机选择指定数据,replace=False表示不能重复
    6. np.random.uniform(-2, 2, 10) # 生成10个均匀分布的随机数,范围为[-2, 2)
    7. np.random.uniform(-2, 2, size=(2,3,3))

    4. 均匀分布情况图

    1. import matplotlib.pyplot as plt
    2. # 生成均匀分布的随机数
    3. aa = np.random.uniform(-1, 1, 1000000)
    4. # 画图看分布状况
    5. # 创建画布
    6. plt.figure(figsize=(8, 4), dpi=100)
    7. # 绘制直方图
    8. plt.hist(aa, bins=100) # aa代表要使用的数据,bins表示要划分区间数
    9. plt.show() # 显示图像

     结果如下

     学习导航:个人导航-实用导航网站

  • 相关阅读:
    【直播笔记0628】 高频面试并发的本质:JAVA程序员应该掌握的并发知识
    effective c++ 41 隐式接口和编译器多态
    Solaris 9 Sparc下安装整合Apache2和Tomcat5
    将excel表中的英文自动翻译成中文
    (五)Ansible-playbook
    【第一阶段:java基础】第4章:java控制结构(P103-P154)
    oracle_申明与赋值
    【DAY04 软考中级备考笔记】数据结构基本结构和算法
    LeetCode 0799. 香槟塔
    python轻量级性能工具-Locust
  • 原文地址:https://blog.csdn.net/qq_43874317/article/details/128009007