Python3:numpy的简单使用2(改变当前ndarray的类型和形状以及均匀分布和正太分布,去重)

声明

当前的知识用于本人的复习,改变当前的ndarray的类型,去除重复的数据,序列化,生成均匀分布数据和正太分布的数据以及复习前面的matplotlib画图操作

1.操作一(改变类型,去重,序列化)

前面改变类型可以使用ndarray.dtype=dtype方式实现,这里使用其他方式实现

# 修改当前使用的类型
import numpy as np

np_array = np.array(np.random.randint(1, 10, (2, 5)))
# 1.使用astype方式将需要的数据转换成需要的类型的数据
print("当前产生的数据的类型为:{}".format(np_array.dtype))
print("输出当前产生的数据为:{}".format(np_array))

print("使用astype方式实现的类型转换后的结果:{}".format(np_array.astype(np.float64)))
print("输出原来的数据为:{}".format(np_array))

# 将原来产生的数据转换为byte数据,主要用于序列化的操作
print("使用序列化的操作结果为:{}".format(np_array.tostring()))

# 使用数组的去重操作(去除当前数组中的重复数据的一种操作)
# 1. 将原来的多维数据变为一维的数据然后,可以使用当前的set集合实现的操作
# 2. 使用当前narray的原生的属性进行操作
np_int_array = np_array.astype(np.int32)
print("当前去重的操作后的结果为:{}".format(np.unique(np_int_array)))

# 使用当前的第一种方式实现当前数组的数据的去重操作
one_way_array = np_int_array.flatten()
print("将当前的多维数组转换为当前的一维数组:{}".format(one_way_array))
# 利用当前的set集合方式去除当前数组中的重复的数据
print(list(set(one_way_array)))

结果:

在这里插入图片描述

1.通过上面的astype方式返回的是一个已经通过类型转换后的数据,这个原来产生的数据没有发生任何改变

2.通过ndarray.tostring()方法将当前的类型转化为byte类型的数据

3.通过ndarray.flatten()将当前的多维的数组变成一维的数组

3.通过np.unique()方法可以将重复的元素去除

2.操作二(正太分布,改变形状,切片)

# 使用当前的数据进行当前的切片操作
import numpy as np

# 用于生成当前商品的模拟浮动,默认使用正态分布的操作实现,用于模拟7个商品,基础价格为10元
price_array = np.random.normal(loc=10, scale=0.1, size=(5, 7))
# 输出第一个商品的前两次价格波动
# print(price_array)
print("输出第一个商品的前两天的报价:{}".format(price_array[0, 0:2]))

# 分析当前的数据为二维数据当前的数据的获取为[0,0:2],当前的[0,]表示的就是取二维数组中的第一组数据,后面的就是正常的切片操作
# 这表明可以使用[0,0,:3]的方式操作当前的三维数组,说明 通过下标,的方式可以取出 当前各种维度的数据(再二维以上的数据可以进行的操作)

# 下面通过当前的三维数据进行操作:
np_three_array = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]], [[13, 14, 15], [16, 17, 18]]])
print("当前的数组的形状:{}".format(np_three_array.shape))
print("获取三维数组中的指定的数据:{}".format(np_three_array[0,1,:2]))

# 修改当前三维数组的形状,当前元素的大小为18,所以进行当前的修改当前的形状的时候,必须保持当前的一致性大小必须是18
# 重新设置当前的形状的时候,生成的数据为:9行2列的数据
print(price_array.reshape((7,5))) # 当前的数据默认是按照当前的顺序执行的,原来的数据没有改变

# 使用resize方法将当前的数据进行形状的改变,原来的数据已经产生变化
price_array.resize((7,5))
print()
print(price_array)
# 将当前的行转换成列并实现了行列的互转(即当前行列的数据的对调)
print(price_array.T)

结果:
在这里插入图片描述

总结:

1.通过当前的np.random.normal方式创建一个正太分布的数组,loc是基础值,scale是浮动的方差

2.通过ndarray[0,0:2]这种切片方式获取第一个数组中的前两个数据

3ndarray.reshape()具有返回值,返回的是一个改变形状后的结果,原来的数据不发生变化

4.ndarray.resize()方法没有返回值,这个会改变原来的数据的形状

5.ndarray.T这个会将当前的x轴的数据与y轴的数据交换

3.操作3(均匀分布和正太分布画图)

# 使用当前numpy生成一些随机的数组
# 1. 生成均匀分布的数组的数据
import numpy as np

# 使用当前的0 表示硬币的正面,使用当前的1 表示硬币的反面,如果数据量越大分布的可能性就越均匀
random_array = np.random.uniform(0, 1, 100000)
print(random_array)

# 使用当前的画图的方式显示当前的数据
import matplotlib.pyplot as plt
plt.figure()
plt.hist(random_array,1000,color="r")
plt.show()

# 使用当前的方差的方式生成一组数据,这组数据的结果的表现形式为:平均值为 100 并且当前的方差为1 的 十万个数据
# 当前的方差:(每一个数减去平均数)的平方 除以当前比较的个数然后再开根
score_array =np.random.normal(loc=100,scale=1,size=1000000)
plt.figure()
plt.hist(score_array,1000)
plt.show()

# 通过当前生成的数据图表可以知道当前的数据,的中间部分就是平均值,表示当前的离散度越小,当前的数据就会越集中

结果:

均匀分布

在这里插入图片描述

正太分布

在这里插入图片描述

总结:

1.均匀分布使用np.random.uniform()方式生成指定范围均匀分布的指定个数的数据,这些数据可以通过图表方式发现当前的数据显示情况可以发现

2.正太分布使用np.random.normal()方法生成当前生成的数落在指定的loc的数据上

3.一般这种分布统计图都会使用直方图的方式显示:plt.hist()

4.总结

1.使用当前的numpy可以很容易的生成和模拟数据,比如一些均匀分布的数据和正太分布的数据

2.使用numpy和matplotlib实现的画图可以很直观的看出这个数据的显示

以上纯属个人见解,如有问题请联系本人!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值