头歌实训-机器学习(Numpy科学计算)

第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

你可能感兴趣的:(机器学习,numpy,人工智能)