第1关:数组创建
# 引入numpy库
import numpy as np
# 定义cnmda函数
def cnmda(m,n):
'''
创建numpy数组
参数:
m:第一维的长度
n: 第二维的长度
返回值:
ret: 一个numpy数组
'''
ret = 0
# 请在此添加创建多维数组的代码并赋值给ret
#********** Begin *********#
a=[b for b in range(n)]
ret=np.array([a]*m)
#********** End **********#
return ret
第2关:切片索引
import numpy as np
def get_roi(data, x, y, w, h):
'''
提取data中左上角顶点坐标为(x, y)宽为w高为h的ROI
:param data: 二维数组,类型为ndarray
:param x: ROI左上角顶点的行索引,类型为int
:param y: ROI左上角顶点的列索引,类型为int
:param w: ROI的宽,类型为int
:param h: ROI的高,类型为int
:return: ROI,类型为ndarray
'''
#********* Begin *********#
return data[x:x+h+1,y:y+w+1]
#********* End *********#
第3关:基本运算
# 引入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
第4关:ufunc
import numpy as np
ndarray = np.ndarray
def task1(A: ndarray) -> ndarray:
'''
:param A n*m维的numpy数组
任务要求:计算矩阵A的平方根并与标量2相加;
'''
########## Begin ##########
B = np.sqrt(A) + 2
########## End ##########
return B
def task2(A: ndarray) -> ndarray:
'''
:param A n*m维的numpy数组
任务要求:将矩阵A开根号后的小数部分与原矩阵A相加;
'''
########## Begin ##########
B = A + np.modf(np.sqrt(A))[0]
########## End ##########
return B
def task3(A: ndarray) -> ndarray:
'''
:param A n*m维的numpy数组
任务要求:使用通用函数numpy.dot()计算矩阵A与矩阵A转置的矢量积;
提示:使用.T属性获得转置矩阵,例如A的转置矩阵为A.T
'''
########## Begin ##########
B = np.dot(A, A.T)
########## End ##########
return B
第5关:文件读写
import numpy as np
ndarray = np.ndarray
def task():
'''
任务要求:从指定路径的二进制文件中("step5/FileHandling/files/A.npy")读取NumPy矢量数组A,从从指定路径的txt文件中读取矢量数组B("step5/FileHandling/files/B.txt"),然后使用通用函数numpy.add()对数组A和B进行求和,将结果保存到指定的二进制文件中("step5/FileHandling/files/out.npy")
提示1:使用np.load('path')加载二进制文件'step5/FileHandling/files/A.npy'
提示2:使用np.loadtxt('path', delimiter=',')加载文本文件'step5/FileHandling/files/B.txt'
提示3:使用使用np.save('path', C)将结果储存到二进制文件'step5/FileHandling/files/out.npy'中
提示3:A.npy和B.txt中矩阵维度一致
'''
########## Begin ##########
A = np.load('step5/FileHandling/files/A.npy')
B = np.loadtxt('step5/FileHandling/files/B.txt', delimiter=',')
C = A + B
np.save("step5/FileHandling/files/out.npy", C)
########## End ##########
第6关:数组切片与索引
# 引入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
第7关:数组堆叠
# 引入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