np.ones(shape, dtype)
生成结果都是1的数组 shape: 数组形状维度 dtype: 数组类型np.ones_like(a, dtype)
生成结果都是1的数组,形状和a一致 a: ndarray对象 dtype: 数组类型np.zeros(shape, dtype)
生成结果都是0的数组np.zeros_like(a, dtype)
生成结果都是0的数组举例如下:
生成一个4行8列的所有值都是1的ndarray二维数组。 ones = np.ones([4,8]) ones返回结果:
array([[1., 1., 1., 1., 1., 1., 1., 1.], [1., 1., 1., 1., 1., 1., 1., 1.], [1., 1., 1., 1., 1., 1., 1., 1.], [1., 1., 1., 1., 1., 1., 1., 1.]]) 生成一个和ones对象形状一致的所有值都是0的ndarray二维数组。 np.zeros_like(ones)返回结果:
array([[0., 0., 0., 0., 0., 0., 0., 0.], [0., 0., 0., 0., 0., 0., 0., 0.], [0., 0., 0., 0., 0., 0., 0., 0.], [0., 0., 0., 0., 0., 0., 0., 0.]])np.array(object, dtype)
np.asarray(a, dtype)
a = np.array([[1,2,3],[4,5,6]]) # 从现有的数组当中创建 a1 = np.array(a) # 相当于索引的形式,并没有真正的创建一个新的 a2 = np.asarray(a)返回结果:
array([ 0., 10., 20., 30., 40., 50., 60., 70., 80., 90., 100.])返回结果:
array([ 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95])返回结果:
array([ 1., 10., 100.])什么是正态分布? 正态分布是一种概率分布。正态分布是具有两个参数μ和σ的连续型随机变量的分布,第一参数μ是服从正态分布的随机变量的均值,第二个参数σ是此随机变量的标准差,所以正态分布记作N(μ,σ )。
正态分布的应用 生活、生产与科学实验中很多随机变量的概率分布都可以近似地用正态分布来描述。例如学校某个班级所有学生的身高情况。
正态分布特点 μ决定了其位置,其标准差σ决定了分布的幅度。当μ = 0,σ = 1时的正态分布是标准正态分布。
正态分布创建方式
np.random.normal(loc=0.0, scale=1.0, size=None)
loc:float 此概率分布的均值(对应着整个分布的中心centre)
scale:float 此概率分布的标准差(对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高)
size:int or tuple of ints 输出的shape,默认为None,只输出一个值
举例1:全国年龄在18-30岁之间的男生身高,均值为1.75,标准差为1。采集样本数据100000000个。
那么就可以生成均值为1.75,标准差为1的正态分布数据,100000000个。
# 生成均匀分布的随机数 x1 = np.random.normal(1.75, 1, 100000000) # 画图看分布状况 # 1)创建画布 plt.figure(figsize=(20, 10), dpi=100) # 2)绘制直方图 plt.hist(x1, 1000) # 3)显示图像 plt.show()绘制出的图像如下:
举例2:随机生成4支股票1周的交易日涨幅数据 4支股票,一周(5天)的涨跌幅数据,如何获取?
我们可以模拟生成一组股票的涨跌幅的数据,随机生成涨跌幅在某个正态分布内,比如均值0,方差1。
股票涨跌幅数据的创建:
# 创建符合正态分布的4只股票5天的涨跌幅数据 stock_change = np.random.normal(0, 1, (4, 5)) stock_change返回结果:
array([[-0.47571852, -0.54355285, 0.31595262, -1.44941827, -0.07115282], [ 0.91669558, -0.78451371, -0.56579387, 0.12939492, -1.51728897], [-0.21811146, -1.53754534, 0.68133651, 0.72941602, 0.82041078], [-0.51636329, 1.48622405, 1.15117815, 1.67979461, 0.37039287]])举例: 随机生成1亿个-1到1的数字。
# 生成均匀分布的随机数 x2 = np.random.uniform(-1, 1, 100000000)画图看分布状况:
import matplotlib.pyplot as plt # 生成均匀分布的随机数 x2 = np.random.uniform(-1, 1, 100000000) # 画图看分布状况 # 1)创建画布 plt.figure(figsize=(10, 10), dpi=100) # 2)绘制直方图 plt.hist(x=x2, bins=1000) # x代表要使用的数据,bins表示要划分区间数 # 3)显示图像 plt.show()通过上面代码绘制的直方图可以看出,把-1到1区间划分成了1000份,那么这生成的1亿个数字,每个区间数字分布的个数大致都在100000个。这种就属于均匀分布。
一维、二维、三维的数组如何索引?
直接进行索引,切片对象[:, :] – 先行后列二维数组索引方式:
举例:获取上述代码中生成的第一个股票的前3个交易日的涨跌幅数据 # 二维的数组,两个维度 stock_change[0, 0:3]返回结果:
array([-0.47571852, -0.54355285, 0.31595262])修改后类型会转换为np.int32。
创作不易,白嫖不好,各位的支持和认可,就是我创作的最大动力,我们下篇文章见!
Dragon少年 | 文
如果本篇博客有任何错误,请批评指教,不胜感激 !