任务描述
本关任务:对 Numpy
数组进行拆分。
相关知识
为了完成本关任务,你需要掌握:拆分数组。
使用 Numpy
,我们可以方便的对数组进行拆分,比如使用 hsplit()
、vsplit()
、dsplit()
、split()
函数等。
拆分数组
准备数组。
import numpy as np
In: a= np.arange(9).reshape(3,3)
In: a
Out: array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
hsplit()
横向拆分。
In: np.hsplit(a,3)
Out:[array([[0],[3], [6]]),
. array([[1], [4],[7]]),
array([[2],[5], [8]])]
vsplit()
纵向拆分。
In: np.vsplit(a,3)
Out: [array([[0, 1, 2]]), array([[3, 4, 5]]), array([[6, 7, 8]])]
dsplit()
深度拆分。 深度拆分要求数组的秩大于等于 3
。
c= np.arange(27).reshape(3,3,3)
In: np.dsplit(c,3)
Out:[array([[[ 0],
[ 3],
[ 6]],
[[ 9],
[12],
[15]],
[[18],
[21],
[24]]]), array([[[ 1],
[ 4],
[ 7]],
[[10],
[13],
[16]],
[[19],
[22],
[25]]]), array([[[ 2],
[ 5],
[ 8]],
[[11],
[14],
[17]],
[[20],
[23],
[26]]])]
编程要求
本关的任务是,补全右侧编辑器 Begin-End 内的代码,分别实现 Numpy
数组的纵向拆分、横向拆分、深度拆分。具体要求如下:
- 函数接受一个参数,然后将数组进行拆分;
- 本关的测试样例参见下文;
- 本关设计的代码文件
splitarray.py
的代码框架如下:
# 引入numpy库
import numpy as np
# 定义varray函数
def vsarray(m,n):
'''
参数:
m:是第一个数组
n:是需要拆分到的维度
返回值:
ret: 一个numpy数组
'''
ret = 0
# 请在此添加代码实现数组的纵向拆分并赋值给ret
#********** Begin *********#
#********** End **********#
return ret
# 定义hsarray函数
def hsarray(m,n):
'''
参数:
m:是第一个数组
n:是需要拆分到的维度
返回值:
ret: 一个numpy数组
'''
ret = 0
# 请在此添加代码实现数组的水平拆分并赋值给ret
#********** Begin *********#
#********** End **********#
return ret
# 定义dsarray函数
def dsarray(m,n):
'''
参数:
m:是第一个数组
n:是需要拆分到的维度
返回值:
ret: 一个numpy数组
'''
ret = 0
# 请在此添加代码实现数组的深度拆分并赋值给ret
#********** Begin *********#
#********** End **********#
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