第2关:Numpy 数组的基本运算

任务描述

本关任务:学会 Numpy 二维数组的一些基本操作。

相关知识

为了完成本关任务,你需要掌握:

  1. 向量与向量之间;
  2. 向量与标量之间。

Numpy 库可以直接进行一些四则运算,快速的处理两个 Numpy 数组:

  1. a = np.array([[1,2,3],[4,5,6]])
  2. b = np.array([[4,5,6],[1,2,3]])

向量与向量之间

1.加法
  1. In:np.add(a,b) 或 a+b
  2. Out:array([[5, 7, 9],
  3. [5, 7, 9]])
2.减法
  1. In:np.subtract(a,b) 或 a-b
  2. Out:array([[-3, -3, -3],
  3. [ 3, 3, 3]])
3.乘法(X乘)
  1. In:np.multiply(a,b) 或 a * b
  2. Out:array([[ 4, 10, 18],
  3. [ 4, 10, 18]])
4.乘法(点乘)
  1. a = np.array([[1,2,3],[4,5,6]])
  2. b = np.array([4,5,6])
  3. In: np.dot(a,b)
  4. Out:array([32, 77])
5.除法
  1. a = np.array([[1,2,3],[4,5,6]])
  2. b = np.array([[4,5,6],[1,2,3]])
  3. In:np.divide(a,b) 或 a/b
  4. Out:array([[ 0.25, 0.4 , 0.5 ],
  5. [ 4. , 2.5 , 2. ]])

向量与标量之间

a = np.array([[1,2,3],[4,5,6]])

1.加法
  1. In: a +1
  2. Out:array([[2, 3, 4],
  3. [5, 6, 7]])
2.减法
  1. In: a -1
  2. Out:array([[0, 1, 2],
  3. [3, 4, 5]])
3.乘法
  1. In: a*2
  2. Out:array([[ 2, 4, 6],
  3. [ 8, 10, 12]])
4.除法
  1. In: a/2
  2. Out:array([[ 0.5, 1. , 1.5],
  3. [ 2. , 2.5, 3. ]])
5.求余
  1. In:a%2
  2. Out:array([[1, 0, 1],
  3. [0, 1, 0]])
6.矩阵转置
  1. In:a.T
  2. Out:array([[1, 4],
  3. [2, 5],
  4. [3, 6]])
7.矩阵的逆

矩阵可逆的充要条件是矩阵满秩。

  1. import numpy as np
  2. import numpy.linalg as lg
  3. a = np.array([[1,2,3],[4,5,6],[7,8,9]])
  4. In:lg.inv(a)
  5. Out:array([[ 3.15251974e+15, -6.30503948e+15, 3.15251974e+15],
  6. [ -6.30503948e+15, 1.26100790e+16, -6.30503948e+15],
  7. [ 3.15251974e+15, -6.30503948e+15, 3.15251974e+15]])

编程要求

本关的任务是,补全右侧编辑器 Begin-End 内的代码,以实现向量与标量相加和相乘的的功能。具体要求如下:

  • 函数接受三个参数,然后进行向量与标量之间的运算;

  • 本关的测试样例参见下文;

  • 本关设计的代码文件 cal.py 的代码框架如下:

  1. # 引入numpy库
  2. import numpy as np
  3. # 定义opeadd函数
  4. def opeadd(m,b,n):
  5. '''实现加法
  6. 参数:
  7. m:是一个数组
  8. b:是一个列表
  9. n:是列表中的索引
  10. 你需要做的是 m+b[n]
  11. 返回值:
  12. ret: 一个numpy数组
  13. '''
  14. ret = 0
  15. # 请在此添加 创建多维数组 的代码 并赋值给ret
  16. #********** Begin *********#
  17. #********** End **********#
  18. return ret
  19. # 定义opemul函数
  20. def opemul(m,b,n):
  21. '''实现乘法
  22. 参数:
  23. m:是一个数组
  24. b:是一个列表
  25. n:是列表中的索引
  26. 你需要做的是 m+b[n]
  27. 返回值:
  28. ret: 一个numpy数组
  29. '''
  30. ret = 0
  31. # 请在此添加 创建多维数组 的代码 并赋值给ret
  32. #********** Begin *********#
  33. #********** End **********#
  34. return ret

测试说明

本关的测试过程如下:

  • 平台运行 step5/caltest.py 文件,并以标准输入方式提供测试输入;

  • caltest.py 文件调用 cal 中的方法,平台获取 caltest.py 的输出,然后将其与预期输出作对比,如果一致,则测试通过;否则测试失败。

以下是平台对 step5/caltest.py 的测试样例:

a= np.array([[1,2,3],[4,5,6]]) b = [1,2,3] 测试输入: add; 预期输出:

  1. [[2 3 4]
  2. [5 6 7]]

测试输入:mul; 预期输出:

  1. [[ 2 4 6]
  2. [ 8 10 12]]

 代码:

# 引入numpy库
import numpy as np
# 定义opeadd函数
def opeadd(m,b,n):
    '''
    参数:
    m:是一个数组
    b:是一个列表
    n:是列表中的索引
    你需要做的是 m+b[n]
    返回值:
    ret: 一个numpy数组
    '''    
    ret = 0

    #********** Begin *********#
    ret = m+b[n]
      #********** End **********#

    return ret
# 定义opemul函数
def opemul(m,b,n):
    '''
    参数:
    m:是一个数组
    b:是一个列表
    n:是列表中的索引
    你需要做的是 m*b[n]
    返回值:
    ret: 一个numpy数组
    '''
    ret = 0

    #********** Begin *********#
    ret = m*b[n]
    #********** End **********#
    return ret

 

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jerry&

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值