模块四 第一周 作业一 菜价分析

1 问题描述

复习矩阵相关操作,分析菜价

  • 将表中数据,使用 numpy 进行处理展示

在这里插入图片描述

在这里插入图片描述

  • 使用循环的方式 计算采购总额
  • 使用点乘计算采购总额
  • 测试性能

2 解题提示

  • 使用numpy 中的array进行表格与矩阵的转化
  • 使用dot 来实现矩阵相乘
  • 通过jupyter的魔法命令来测试 性能

3 评分标准

作业共计四个要求,要求1,3各为5分,要求2,4各为10分。

4 要点解析

  • 矩阵点乘

矩阵相乘必须满足矩阵A的列数与矩阵B的行数相等,列数与行数对应相乘,然后相加。

在这里插入图片描述

  • jupyter魔法命令

jupyter用来测试时间的魔法命令共计四种

  • %timeit 测试代码的执行时间 【%timeit后边只能跟一行代码】
%timeit lis = [x for x in range(10000)]
  • %%timeit 测试代码块的执行时间
%%timrit
lis = []
for i in range(10000):
    lis.append(1)
  • %time 测试单次运行所需要的时间 【%time和%timeit都是测试时间,但是%time没有%timeit准确】
%time lis = [x for x in range(10000)]
  • %%time 测试代码块的执行时间
%%time
lis = []
for i in range(10000):
	lis.append(i)

5 代码实现

#%% md
## 作业一:
- 复习矩阵相关操作,并完成下题: 菜价
日期 白菜 土豆 冬瓜
2019/7/28 1.2 1.5 1.8
2019/7/29 1.3 1.4 1.9
2019/7/30 1.1 1.6 1.7
- 每天采购数量相等,分别如下
品名 数量
白菜 5
土豆 10
冬瓜 9
- 上面的数据,可以在numpy中表示如下 5分
X = np.array([[1.2, 1.5, 1.8],
 [1.3, 1.4, 1.9],
 [1.1, 1.6, 1.7]])
y = np.array([5, 10, 9]).T
- 要求
    - 1. 使用循环的方式计算每天的采购总金额 得到结果为[37.2, 37.6, 36.8],分别表示7/28、7/29、7/30这三天采购总额 10分
    - 2. 使用矩阵点乘来计算每天的采购总金额(使用np.dot来实现矩阵相乘) 5分
    - 3. 测试两种方式的性能 10分
#%%
# 导入模块
import numpy as np
#%% md
#### 使用循环方法得到采购总额
#%%
# 定义for循环计算用的函数
def veg_sum(X,Y):
    # 定义日期列表
    date=['7/28','7/29','7/30']    
    # 定义起始值0
    vegsum=[] 
    sum = 0
    # 循环 
    for i in range(3):
        sum = 0
        for j in range(3):
            # 矩阵相乘 相加
            sum += (X[i,j] * Y[j])
        vegsum.append(sum)
    print(vegsum)
    for i in range(3):
        print('日期:',date[i],'金额:',vegsum[i])
    
#%%
X=np.array([[1.2,1.5,1.8],[1.3,1.4,1.9],[1.1,1.6,1.7]])
Y=np.array([[5,10,9]]).T
#%%
%timeit res = veg_sum(X,Y) 
#%%

#%% md
#### 使用矩阵点乘计算
#%%
def veg_sum_dot(X,Y):
    # 点乘
    vegsum=np.dot(X,Y)
    date=['7/28','7/29','7/30']
    for i in range(3):
        print('日期:',date[i],'金额:',vegsum[i])
#%%
X=np.array([[1.2,1.5,1.8],[1.3,1.4,1.9],[1.1,1.6,1.7]])
Y=np.array([5,10,9]).T
#%%
%time res=veg_sum_dot(X,Y) 
#%%
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值