第5关:Numpy 的拆分

任务描述

本关任务:对 Numpy 数组进行拆分。

相关知识

为了完成本关任务,你需要掌握:拆分数组。

使用 Numpy,我们可以方便的对数组进行拆分,比如使用 hsplit()vsplit()dsplit()split() 函数等。

拆分数组

准备数组。

  1. import numpy as np
  2. In: a= np.arange(9).reshape(3,3)
  3. In: a
  4. Out: array([[0, 1, 2],
  5. [3, 4, 5],
  6. [6, 7, 8]])
hsplit()

横向拆分。

  1. In: np.hsplit(a,3)
  2. Out:[array([[0],[3], [6]]),
  3. . array([[1], [4],[7]]),
  4. array([[2],[5], [8]])]
vsplit()

纵向拆分。

  1. In: np.vsplit(a,3)
  2. Out: [array([[0, 1, 2]]), array([[3, 4, 5]]), array([[6, 7, 8]])]
dsplit()

深度拆分。 深度拆分要求数组的秩大于等于 3

  1. c= np.arange(27).reshape(3,3,3)
  2. In: np.dsplit(c,3)
  3. Out:[array([[[ 0],
  4. [ 3],
  5. [ 6]],
  6. [[ 9],
  7. [12],
  8. [15]],
  9. [[18],
  10. [21],
  11. [24]]]), array([[[ 1],
  12. [ 4],
  13. [ 7]],
  14. [[10],
  15. [13],
  16. [16]],
  17. [[19],
  18. [22],
  19. [25]]]), array([[[ 2],
  20. [ 5],
  21. [ 8]],
  22. [[11],
  23. [14],
  24. [17]],
  25. [[20],
  26. [23],
  27. [26]]])]

编程要求

本关的任务是,补全右侧编辑器 Begin-End 内的代码,分别实现 Numpy 数组的纵向拆分、横向拆分、深度拆分。具体要求如下:

  • 函数接受一个参数,然后将数组进行拆分;
  • 本关的测试样例参见下文;
  • 本关设计的代码文件 splitarray.py 的代码框架如下:
  1. # 引入numpy库
  2. import numpy as np
  3. # 定义varray函数
  4. def vsarray(m,n):
  5. '''
  6. 参数:
  7. m:是第一个数组
  8. n:是需要拆分到的维度
  9. 返回值:
  10. ret: 一个numpy数组
  11. '''
  12. ret = 0
  13. # 请在此添加代码实现数组的纵向拆分并赋值给ret
  14. #********** Begin *********#
  15. #********** End **********#
  16. return ret
  17. # 定义hsarray函数
  18. def hsarray(m,n):
  19. '''
  20. 参数:
  21. m:是第一个数组
  22. n:是需要拆分到的维度
  23. 返回值:
  24. ret: 一个numpy数组
  25. '''
  26. ret = 0
  27. # 请在此添加代码实现数组的水平拆分并赋值给ret
  28. #********** Begin *********#
  29. #********** End **********#
  30. return ret
  31. # 定义dsarray函数
  32. def dsarray(m,n):
  33. '''
  34. 参数:
  35. m:是第一个数组
  36. n:是需要拆分到的维度
  37. 返回值:
  38. ret: 一个numpy数组
  39. '''
  40. ret = 0
  41. # 请在此添加代码实现数组的深度拆分并赋值给ret
  42. #********** Begin *********#
  43. #********** End **********#
  44. return ret

测试说明

本关的测试过程如下:

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

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

  • 预处理数组:

a= np.arange(9).reshape(3,3)

c = np.arange(27).reshape(3,3,3)

以下是平台对 step4/splitarraytest.py 的测试样例:

测试输入: v

预期输出: [array([[0, 1, 2]]), array([[3, 4, 5]]), array([[6, 7, 8]])]

测试输入: h

预期输出: [array([[0],[3],[6]]), array([[1],[4],[7]]), array([[2],[5],[8]])]

代码:

# 引入numpy库
import numpy as np
# 定义varray函数
def  vsarray(m,n):
    '''
    参数:
    m:是第一个数组
    n:是需要拆分到的维度
    返回值:
    ret: 一个numpy数组
    '''
    ret = 0
    # 请在此添加代码实现数组的纵向拆分并赋值给ret
    #********** Begin *********#
    ret = np.vsplit(m,n)
    #********** End **********#
    return ret
# 定义darray函数
def  dsarray(m,n):
    '''
    参数:
    m:是第一个数组
    n:是需要拆分到的维度
    返回值:
    ret: 一个numpy数组
    '''
    ret = 0
    # 请在此添加代码实现数组的深度拆分并赋值给ret
    #********** Begin *********#
    ret = np.dsplit(m,n)
    #********** End **********#
    return ret
 # 定义harray函数
def  hsarray(m,n):
    '''
    参数:
    m:是第一个数组
    n:是需要拆分到的维度
    返回值:
    ret: 一个numpy数组
    '''
    ret = 0
    # 请在此添加代码实现数组的水平拆分并赋值给ret
    #********** Begin *********#
    ret = np.hsplit(m,n)
    #********** End **********#
    return ret

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Jerry&

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

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

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

打赏作者

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

抵扣说明:

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

余额充值