本实训介绍数据处理 Numpy 库的一些基本使用技巧,主要内容包括 Numpy 数组的创建、基本运算、切片与索引、堆叠以及拆分等。
本实训假设学员已经掌握 Python 的基本知识,尤其是列表的相关用法。如果学员对 Python 数组熟悉,则可较快完成本实训。
第1关:Numpy创建数组
编程要求:
本关的任务是,补全右侧编辑器中 Begin-End 区间的代码,以实现创建一个m*n的多维数组的功能。具体要求如下:
函数接受两个参数,然后创建与之对应的的多维数组;
# 引入numpy库
import numpy as np
# 定义cnmda函数
def cnmda(m,n):
'''
创建numpy数组
参数:
m:第一维的长度
n: 第二维的长度
返回值:
ret: 一个numpy数组
'''
ret = 0
# 请在此添加创建多维数组的代码并赋值给ret
#********** Begin *********#
x = [y for y in range(n)]
ret = np.array([x]*m)
#********** End **********#
return ret
第2关:Numpy数组的基本运算
编程要求:
本关的任务是,补全右侧编辑器中 Begin-End 区间的代码,以实现向量与标量相加和相乘的的功能。具体要求如下:
函数接受三个参数,然后进行向量与标量之间的运算;
# 引入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
第3关:Numpy数组的切片与索引
编程要求:
本关的任务是,右侧编辑器中 Begin-End 区间的代码,以实现Numpy数组的索引功能的功能。具体要求如下:
函数接受两个参数,然后返回切片找出的指定元素;
# 引入numpy库
import numpy as np
# 定义cnmda函数
def ce(a,m,n):
'''
参数:
a:是一个Numpy数组
m:是第m维数组的索引
n:第m维数组的前n个元素的索引
返回值:
ret: 一个numpy数组
'''
ret = 0
# 请在此添加切片的代码,实现找出多维数组a中第m个数组的前n个元素 并赋值给ret
#********** Begin *********#
ret = a[m,:n]
#********** End **********#
return ret
第4关:Numpy数组的堆叠
编程要求:
本关的任务是,补全右侧编辑器中Begin-End区间的代码,分别实现Numpy数组的垂直叠加、水平叠加、深度叠加。具体要求如下:
函数接受两个参数,然后将两个参数进行叠加;
# 引入numpy库
import numpy as np
# 定义varray函数
def varray(m,n):
'''
参数:
m:是第一个数组
n:是第二个数组
返回值:
ret: 一个numpy数组
'''
ret = 0
# 请在此添加代码实现数组的垂直叠加并赋值给ret
#********** Begin *********#
ret = np.vstack((m,n))
#********** End **********#
return ret
# 定义darray函数
def darray(m,n):
'''
参数:
m:是第一个数组
n:是第二个数组
返回值:
ret: 一个numpy数组
'''
ret = 0
# 请在此添加代码实现数组的深度叠加并赋值给ret
#********** Begin *********#
ret = np.dstack((m,n))
#********** End **********#
return ret
# 定义harray函数
def harray(m,n):
'''
参数:
m:是第一个数组
n:是第二个数组
返回值:
ret: 一个numpy数组
'''
ret = 0
# 请在此添加代码实现数组的水平叠加并赋值给ret
#********** Begin *********#
ret = np.hstack((m,n))
#********** End **********#
return ret
第5关:Numpy的拆分
编程要求:
本关的任务是,补全右侧编辑器中Begin-End区间的代码,分别实现Numpy数组的纵向拆分、横向拆分、深度拆分。具体要求如下:
函数接受一个参数,然后将数组进行拆分;
# 引入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