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)

代码如下

one = np.ones([3,4])
one
------------------------------------
import numpy as np
one = np.ones([3,4])
np.ones_like(one, dtype=np.string_)
------------------------------------
import numpy as np
one = np.ones([3,4])
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:数组类型

举例演示如下

np.linspace(0, 100, 5)   # 数量为5
np.arange(0, 50, 5)   # 步长为5

np.logspace(1, 10, 10, base=2)  # 2分别取1-10的整数的幂,(10-1)+1=10个数
np.logspace(2, 7, 6, base=3)  # 3分别取2,3,4,5,6,7共6个数的幂,(7-2)+1=6个数
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):返回指定形状的标准正态分布的数组
np.random.randn(2, 2 ,3)  # 从标准正态分布中返回指定维数样本值

np.random.normal(2, 0.5, 10)   # 指定均值、标准差

np.random.standard_normal(10)   # 标准正态

结果如下 

2.正态分布作图 

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

import numpy as np
import matplotlib.pyplot as plt
# 生成均值为2,标准差为0.5的正态分布数据,100000000个
a = np.random.normal(2, 0.5, 100000000)

# 创建画布
plt.figure(figsize=(8, 4), dpi=100)
# 绘制直方图
plt.hist(a, 1000, color='y')
# 显示图像
plt.show()

输出如图

标准正态分布图

import numpy as np
import matplotlib.pyplot as plt
# 标准正态分布
a = np.random.standard_normal(200000)

# 创建画布
plt.figure(figsize=(8, 4), dpi=100)
# 绘制直方图
plt.hist(a, 1000, color='y')
# 显示图像
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中描述一致

演练代码如下

np.random.rand(2, 2, 3)   #  # 从均匀分布中返回指定维数样本值,范围为[0,1),三维数组

np.random.randint(-2, 2, 10)   # 生成[-2, 2)范围内的随机整数

np.random.random(10)   # 生成[0, 1)范围内的随机数

a = np.random.randint(-20, 20, 10) 
np.random.choice(a,10,replace=False)   # 从a中随机选择指定数据,replace=False表示不能重复

np.random.uniform(-2, 2, 10)   # 生成10个均匀分布的随机数,范围为[-2, 2)

np.random.uniform(-2, 2, size=(2,3,3))   

4. 均匀分布情况图

import matplotlib.pyplot as plt
# 生成均匀分布的随机数
aa = np.random.uniform(-1, 1, 1000000)

# 画图看分布状况
# 创建画布
plt.figure(figsize=(8, 4), dpi=100)
# 绘制直方图
plt.hist(aa, bins=100)  # aa代表要使用的数据,bins表示要划分区间数
plt.show()   # 显示图像

 结果如下

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

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

learning-striving

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值