题目:
- 按照本班级人数,如50人,生成对应数量的随机数,组成一个随机红包数组。
- 调整红包中的每一个随机数,使得它们的总和为100。
- 从csv文件(自己用excel创建,可以大家共享)中读出本班学生名字数组,这个数组要和红包数组shape一样。
- 筛选出运气王的名字,即红包最大的同学名字。
- 同样逻辑再发一次红包,筛选出两次红包之和的运气王。
调用 numpy包
代码:
import numpy as np
# 生成随机红包数组
a=np.random.randint(1,100,size=53).reshape(53,1)
# 读取csv文件
data=np.loadtxt("mingzi.csv",dtype=np.str).reshape(53,1)
# 组合成50×2
datasum=np.hstack((data,a))
# print(datasum)
# 最大数
# print("第一次最大红包金额为:{}".format(max(datasum[:,1])))
# print(datasum[datasum==max(datasum[:,1]),:][:,0])
# 运气王的名字
Yunqq=np.unique(datasum[datasum[:,1]==max(datasum[:,1]),:][:,0])
print("第一次红包共有{}名运气王:".format(len(Yunqq)))
for car in Yunqq:
print(car)
# 生成随机红包数组
aTwo=np.random.randint(1,100,size=53).reshape(53,1)
# 两次红包相加
aTwo=aTwo+a
# 组合成50×2
datasumTwo=np.hstack((data,aTwo))
# 最大数
# print("两次红包最大金额为:{}".format(int(max(aTwo))))
# 运气王的名字
YunqqTwo=np.unique(datasumTwo[datasumTwo[:,1]==max(datasumTwo[:,1]),:][:,0])
print("第二次红包共有{}名运气王:".format(len(YunqqTwo)))
for car in YunqqTwo:
print(car)
实验报告册:
实验(实训)项目名称 | ndarray的筛选-发红包 | ||
学 时 | 4 | 实验(实训)室(地点) | |
实验(实训)日期 | 成 绩 | ||
一 、实验(实训)目的与要求
二 、实验(实训)原理与内容
Numpy(Numerical Python)提供了python对多维数组对象的支持:ndarray,具有矢量运算能力,ndarray中随机函数能辅助很多数据处理。
三 、实验(实训)仪器设备、器材、工具、软件等
四 、实验(实训)方法、步骤、过程记录与处理 import numpy as np # 生成随机红包数组 a=np.random.randint(1,100,size=53).reshape(53,1) # 读取csv文件 data=np.loadtxt("mingzi.csv",dtype=np.str).reshape(53,1) # 组合成50×2 datasum=np.hstack((data,a)) # 运气王的名字 Yunqq=np.unique(datasum[datasum[:,1]==max(datasum[:,1]),:][:,0]) print("第一次红包共有{}名运气王:".format(len(Yunqq))) for car in Yunqq: print(car) # 生成随机红包数组 aTwo=np.random.randint(1,100,size=53).reshape(53,1) # 两次红包相加 aTwo=aTwo+a # 组合成50×2 datasumTwo=np.hstack((data,aTwo)) # 最大数 # 运气王的名字 YunqqTwo=np.unique(datasumTwo[datasumTwo[:,1]==max(datasumTwo[:,1]),:][:,0]) print("二次红包共有{}名运气王:".format(len(YunqqTwo))) for car in YunqqTwo: print(car) 五 、实验(实训)结果与分析总结 结果: 分析总结: 对numpy库的使用还不太熟练,需要加强练习;但是在潜心的研究之下能把这个红包弄出来,就是使用的时间过长,没有太大的效果;之后会加强训练。 |