一、生成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(μ, ),μ为均值,为方差,方差开根号即为标准差,μ决定了其对称位置,决定了分布的幅度,方差和标准差用来衡量数据的离散程度
正态分布创建方式
- np.random.randn(d0, d1, …, dn):用于生成标准正态分布随机数,d0, d1, …, dn为数组的维度,从标准正态分布中返回一个或多个样本值
- np.random.normal(loc=0.0, scale=1.0, size=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.0, high=1.0, size=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() # 显示图像
结果如下
学习导航:个人导航-实用导航网站