湖南大学Python实训课程第11次实验:数据思维(一)
第六章-数据思维-6.2Numpy科学计算应用1
第1关:创建numpy数组
import numpy as np
#1 使用numpy的linspace函数,创建初值为1,终止为5,元素个数为20的等差数组
########## begin ##########
# 请在此填写代码
A=np.linspace(1,5,20)
########## end ##########
#print(A)
#2 将数组B变换成2行5列的二维数组
B=np.arange(0,20,2)
# 请在此填写代码
B=B.reshape(2,5)
########## end ##########
#3 随机数种子为7,生成4行3列的随机数数组,值在[0,1)之间
np.random.seed(7)
# 请在此填写代码
C=np.random.rand(4,3)
########## end ##########
#print(C)
#4 随机数种子为11,生成3行4列的正态分布随机数数组,期望值为5,标准差为2
np.random.seed(7)
# 请在此填写代码
D=np.random.normal(5,2,(3,4))
########## end ##########
#print(D)
#5 将数组D的内容写入文本文件,使用英文分号为分隔符,浮点数精确到小数点后5位,文件名为1.txt
# 请在此填写代码
np.savetxt("1.txt",D,fmt='%0.5f',delimiter=";")
########## end ##########
#6 使用斐波那契数列(1,1,2,3,5,...)生成一个5行4列的numpy数组,数组名为E
# 请在此填写代码
def fibo(n):
li = [1,1]
for i in range(n-2):
li.append(li[-1]+li[-2])
return li
E = np.array(fibo(20)).reshape(5,4)
#print(fibo(20))
########## end ##########
第2关:访问数组元素
import numpy as np
#注意,以下对行号和列号的描述都从0开始,例如,最开始的行是第0行
def func1(arr):
########## begin ##########
# 请在此填写代码,返回数组arr的第0行、最后一列的元素值
return arr[0,-1]
########## end ##########
def func2(arr):
########## begin ##########
# 请在此填写代码,对数组arr,去掉前面2行,并依次选取第2,0,1列,最后返回索引结果
return arr[2:,(2,0,1)]
########## end ##########
def func3(arr):
########## begin ##########
# 请在此填写代码,对数组arr, 依次选取第2,0行,并去掉最后一列,最后返回索引结果
return arr[(2,0),:-1]
########## end ##########
def func4(arr):
########## begin ##########
# 请在此填写代码,将数组arr中的偶数替换成原数的平方,函数无返回值
arr[arr%2 == 0] = arr[arr%2 == 0]**2
第3关:numpy基本运算
import numpy as np
#注意,以下对行号和列号的描述都从0开始,例如,最开始的行是第0行
def func1(arr1, arr2):
########## begin ##########
# 请在此填写代码,计算矩阵arr1和arr2的点乘,其中arr1的列数和arr2的行数相同
return arr1 @ arr2
########## end ##########
def func2(arr1,arr2):
########## begin ##########
# 请在此填写代码,计算矩阵arr1和arr2的星乘,其中arr1和arr2的形状相同
return arr1*arr2
########## end ##########
def func3(arr):
########## begin ##########
# 请在此填写代码,对数组arr, 计算并返回所有元素的最大值
return np.max(arr)
########## end ##########
def func4(arr):
########## begin ##########
# 请在此填写代码,对数组arr, 计算每一列的最小值,以数组的形式返回
return np.min(arr,axis=0)
########## end ##########
def func5(arr):
########## begin ##########
# 请在此填写代码,对数组arr, 计算每个元素的正弦函数结果,以新的数组形式返回
return np.sin(arr)
########## end ##########
第六章-数据思维-6.3Matplotlib数据可视化1
第1关:matplotlib绘图基础
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='Microsoft YaHei' #显示汉字
plt.rcParams['axes.unicode_minus'] = False #显示负号
def DrawLine(output_name):
x=np.arange(0,2*np.pi,0.1)
y1=np.sin(x)
y2=np.sin(x*2)
plt.figure('fig1')
########## begin ##########
# 请在此填写代码,分别使用数据(x,y1)和(x,y2)绘制线图
plt.plot(x,y1,'r-',label='2π周期')
plt.plot(x,y2,'b-',label='π周期')
plt.xlabel('自变量')
plt.ylabel('因变量')
plt.legend(loc = 'upper right')
plt.title('不同周期正弦曲线')
plt.savefig(output_name)
########## end ##########
def DrawPie(output_name):
sales=[1528,796,543,1046,865,] #手机店上月各品牌手机销量
brands=['华为', 'vivo', 'oppo', '小米', '苹果'] #品牌列表
plt.figure('fig2')
########## begin ##########
# 请在此填写代码,绘制手机销量的饼图
x=[32.0,16.7,11.4,21.9,18.1]
y=[0.1,0,0,0,0]
plt.title('手机销量')
plt.pie(sales,y, labels=brands, autopct='%1.1f%%')
plt.savefig(output_name)
########## end ##########
def DrawBar(output_name):
avg_scores = np.array([80.54, 78.46, 74.68, 82.35]) #各班考试平均分
class_name = ['机械1班', '机械2班', '电气1班', '电气2班']
plt.figure('fig3')
########## begin ##########
# 请在此填写代码,绘制各班平均成绩的条形图
plt.xlabel('班级')
plt.ylabel('平均成绩')
plt.bar(class_name,avg_scores,bottom=0)
plt.savefig(output_name)
########## end ##########
第二题题目描述有问题;而且win11上好像没有Simhei这个字体,只有Microsoft YaHei
第2关:将numpy数组和pandas电子表格数据可视化
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
import pandas as pd
matplotlib.rcParams['font.family']='simHei' #显示汉字
plt.rcParams['axes.unicode_minus'] = False #显示负号
#input_name:输入的excel文件名
#output_name:输出的图片文件名
def DrawLine(input_name, output_name):
plt.figure('fig1')
########## begin ##########
# 请在此填写代码,绘制开盘价和收盘价的线图,日期为横轴
plt.figure('fig1')
df1=pd.read_excel(input_name)
plt.plot(df1.日期,df1.开盘,'b-v')
plt.plot(df1.日期,df1.收盘,'r-v')
plt.title('开盘价与收盘价对比图')
plt.xlabel('日期')
plt.ylabel('股价')
plt.legend(['开盘价','收盘价'],loc='upper right')
plt.savefig(output_name)
########## end ##########
########## end ##########
#input_name:输入的csv文件名
#output_name:输出的图片文件名
#input_name:输入的csv文件名
#output_name:输出的图片文件名
def DrawBar(input_name, output_name):
plt.figure('fig2')
########## begin ##########
# 请在此填写代码,绘制各年度的国内生产总值的条形图
df1=pd.read_csv(input_name,names=['年度','国内生产总值','第一产业','第二产业','第三产业'])
plt.bar(df1.年度,df1.国内生产总值)
plt.xlabel('年度')
plt.ylabel('国内生产总值')
plt.savefig(output_name)
########## end ##########
总结:
学这个东西投入产出比太低,就期末考10分,直接把课件的ppt和一些错题打印带过去,基本能应付了
作者:湖大方脸