湖南大学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和一些错题打印带过去,基本能应付了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值