Numpy 初体验


第1关:Numpy 创建数组

编程要求
本关的任务是,补全右侧编辑器 Begin-End 内的代码,以实现创建一个 m*n 的多维数组的功能。具体要求如下:

函数接受两个参数,然后创建与之对应的的多维数组;

本关的测试样例参见下文。

本关设计的代码文件 cnmda.py 的代码框架如下:

引入numpy库

import numpy as np
定义cnmda函数
def cnmda(m,n):
    '''
    创建numpy数组
    参数:
         m:第一维的长度
         n: 第二维的长度
    返回值:
        ret: 一个numpy数组
    '''
    ret = 0
    
    # 请在此添加创建多维数组的代码并赋值给ret
    #********** Begin *********#
    #********** End **********#
    
    return ret

测试说明
本关的测试过程如下:

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

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

以下是平台对 step1/cnmdatest.py 的测试样例:

测试输入: 5 8;

预期输出: (5,8)

测试输入: 4 9;

预期输出: (4,9)

示例代码如下:

# 引入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 内的代码,以实现向量与标量相加和相乘的的功能。具体要求如下:

函数接受三个参数,然后进行向量与标量之间的运算;

本关的测试样例参见下文;

本关设计的代码文件 cal.py 的代码框架如下:

引入numpy库

import numpy as np
定义opeadd函数
def opeadd(m,b,n):
    '''实现加法
    参数:
    m:是一个数组
    b:是一个列表
    n:是列表中的索引
    你需要做的是 m+b[n]
    返回值:
    ret: 一个numpy数组
    '''    
    ret = 0
    # 请在此添加 创建多维数组 的代码 并赋值给ret
    #********** Begin *********#
    #********** End **********#
    return ret
 # 定义opemul函数
def opemul(m,b,n):
    '''实现乘法
    参数:
    m:是一个数组
    b:是一个列表
    n:是列表中的索引
    你需要做的是 m+b[n]
    返回值:
    ret: 一个numpy数组
    '''
    ret = 0
    # 请在此添加 创建多维数组 的代码 并赋值给ret
    #********** Begin *********#
    #********** End **********#
    return ret

测试说明
本关的测试过程如下:

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

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

以下是平台对 step5/caltest.py 的测试样例:

a= np.array([[1,2,3],[4,5,6]])
b = [1,2,3]
测试输入: add;
预期输出:

[[2 3 4]
[5 6 7]]
测试输入:mul;
预期输出:

[[ 2 4 6]
[ 8 10 12]]

示例代码如下;

# 引入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 数组的索引功能的功能。具体要求如下:

函数接受两个参数,然后返回切片找出的指定元素;
本关的测试样例参见下文;
本关设计的代码文件 ce.py 的代码框架如下:

# 引入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 *********#
    #********** End **********#

    return ret

测试说明
本关的测试过程如下:

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

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

预处理的数组

[[1,2,3,4,5],[7,8,9,10,11],[12,13,14,15]]

以下是平台对 step2/cetest.py 的测试样例:

测试输入:
1;
3;
预期输出:

[7,8,9]

测试输入:
2;
2;
预期输出:

[12,13]

示例代码如下:

# 引入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 数组的垂直叠加、水平叠加、深度叠加。具体要求如下:

函数接受两个参数,然后将两个参数进行叠加;
本关的测试样例参见下文;
本关设计的代码文件 manipulation.py 的代码框架如下:

# 引入numpy库
import numpy as np
# 定义varray函数
def  varray(m,n):
    '''
    参数:
    m:是第一个数组
    n:是第二个数组
    返回值:
    ret: 一个numpy数组
    '''
    ret = 0
    # 请在此添加代码实现数组的垂直叠加 并赋值给ret
    #********** Begin *********#
    #********** End **********#
    return ret
# 定义darray函数
def  darray(m,n):
    '''
    参数:
    m:是第一个数组
    n:是第二个数组
    返回值:
    ret: 一个numpy数组
    '''
    ret = 0
    # 请在此添加代码实现数组的深度叠加并赋值给ret
    #********** Begin *********#
    #********** End **********#
    return ret
 # 定义harray函数
def  harray(m,n):
    '''
    参数:
    m:是第一个数组
    n:是第二个数组
    返回值:
    ret: 一个numpy数组
    '''
    ret = 0
    # 请在此添加代码实现数组的水平叠加并赋值给ret
    #********** Begin *********#
    #********** End **********#
    return ret

测试说明
本关的测试过程如下:

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

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

预处理数组:
a = np.array([[1,2,3],[4,5,6]])
b = np.array([[3,4,5],[7,8,9]])

以下是平台对 step3/manipulationtest.py 的测试样例:
测试输入: v;
预期输出:

[[1 2 3]
[4 5 6]
[3 4 5]
[7 8 9]]
测试输入: d;
预期输出:

[[[1 3]
[2 4]
[3 5]]
[[4 7]
[5 8]
[6 9]]]
示例代码如下:

# 引入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 数组的纵向拆分、横向拆分、深度拆分。具体要求如下:

函数接受一个参数,然后将数组进行拆分;
本关的测试样例参见下文;
本关设计的代码文件 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

在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值