Numpy 初体验

文章目录

  • 第1关:Numpy 创建数组
  • 第2关:Numpy 数组的基本运算
  • 第3关:Numpy 数组的切片与索引
  • 第4关:Numpy 数组的堆叠
  • 第5关: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

在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/496576.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

用docker在局域网虚拟一个docker虚拟机,支持单独ip,gpu,systemd,在docker里面安装docker

可以实现局域网内虚拟一台linux服务器,效果类似虚拟机,用docker实现,需要注意,这种方式和宿主机是不能通讯的,但是可以和局域网内的设备通讯 觉得好用可以加作者wx: lx-ivan 编写dockerfile vim Dockerfile FROM u…

飞鸟写作怎么用 #经验分享#学习方法#学习方法

飞鸟写作是一款非常好用的论文写作工具,它不仅能够帮助用户写作论文,还可以检测论文的原创性和查重率,是许多学生和研究人员的首选工具。 使用飞鸟写作非常方便,用户只需将论文复制粘贴到工具中,就能够快速得到论文的原…

【Hello,PyQt】控件拖拽

在 PyQt 中实现控件拖拽功能的详细介绍 拖拽功能是现代用户界面设计中常见的交互方式之一,它可以提高用户体验,增加操作的直观性。在 PyQt 中,我们可以很容易地实现控件之间的拖拽功能。本文将介绍如何在 PyQt 中实现控件的拖拽功能。 如何实…

初识C++ · 入门(1)

目录 前言: 1 命名空间 2 输入和输出 3 缺省参数 5 函数重载 前言: C与C语言是有一定交集的,可以理解为本贾尼在使用C语言的时候认为有缺陷,于是加了一些小语法进行改良,后来经过委员会的修改,C98问世…

C#手术麻醉系统源码 可对接HIS LIS PACS 医疗系统各类设备 医院手麻系统源码

C#手术麻醉系统源码 可对接HIS LIS PACS 医疗系统各类设备 手术麻醉信息管理系统主要还是为了手术室开发提供全面帮助的系统,其主要是由监护设备数据采集子系统和麻醉临床系统两个子部分组成。包括从手术申请到手术分配,再到术前访视、术中记录及术后…

在Linux搭建Emlog博客结合内网穿透实现公网访问本地个人网站

文章目录 前言1. 网站搭建1.1 Emolog网页下载和安装1.2 网页测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2.Cpolar稳定隧道(云端设置)2.3.Cpolar稳定隧道(本地设置) 3. 公网访问测试总结 前言 博客作为使…

如何使用Python读取、旋转和和创建空白的PDF文件

试想象一下,你正在处理一堆PDF文件,需要从中提取一些信息或者修改其中的内容。如果你不使用Python,你可能需要手动打开每个文件,复制粘贴你需要的内容,然后再保存为一个新的文件。这简直是一场噩梦!但是&am…

C++从入门到精通——命名空间

命名空间 前言一、命名空间引例什么是命名空间 二、命名空间定义正常的命名空间定义嵌套的命名空间多个相同名称的命名空间 三、命名空间使用加命名空间名称及作用域限定符使用using将命名空间中某个成员引入使用using namespace 命名空间名称引用引用命名空间和引用头文件有什…

手写启动类(start)

为什么要手写一个start? 简化代码,仅使用一个注解就可以实现分页功能(以下以分页为例)。 1.定义一个pageX注解 Documented Retention(RetentionPolicy.RUNTIME)//运行时可以通过反射API获取到注解信息 Target({ElementType.METHOD, ElementType.TYPE})…

redis的设计与实现(四)——单机数据库特性

1. 前言 我们前面了解了redis的数据结构,对象。但是redis对于这些对象的使用和管理策略需要也熟记于心,这篇文章我们就了解一下吧。 2. 类型检查和命令多态 DEL,EXPIRE,RENAME,TYPE,OBJECT 可以对任何数据类型执行SET,GET,APPEND,STRLEN,等…

【opencv】教程代码 —ImgProc (10)图像平滑处理

10. Smoothing.cpp 图像平滑处理 演示不同滤波器的效果。这些滤波器包括均值滤波、高斯滤波、中值滤波和双边滤波。每个滤波器都会在原始图像上应用,并显示滤波后的效果。 /*** 文件 Smoothing.cpp* 简单滤镜的样例代码* 作者 OpenCV团队*///引入所需库文件 #includ…

PL/SQL的词法单元

目录 字符集 标识符 分隔符 注释 oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 PL/SQL块中的每一条语句都必须以分号结束。 一个SQL语句可以跨多行,但分号表示该语句的结束:一行中也可以有多条 SQL语句&…

一周学会Django5 Python Web开发-Django5模型查询(上)

锋哥原创的Python Web开发 Django5视频教程: 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计41条视频,包括:2024版 Django5 Python we…

NLP深入学习:结合源码详解 BERT 模型(三)

文章目录 1. 前言2. 预训练2.1 modeling.BertModel2.1.1 embedding_lookup2.1.2 embedding_postprocessor2.1.3 transformer_model 2.2 get_masked_lm_output2.3 get_next_sentence_output2.4 训练 3. 参考 1. 前言 前情提要: 《NLP深入学习:结合源码详…

2024年N1叉车司机证考试题库及N1叉车司机试题解析

题库来源:安全生产模拟考试一点通公众号小程序 2024年N1叉车司机证考试题库及N1叉车司机试题解析是安全生产模拟考试一点通结合(安监局)特种作业人员操作证考试大纲和(质检局)特种设备作业人员上岗证考试大纲随机出的…

串口通信标准RS232 RS485 RS422的区别

RS-232、RS-422、RS-485是关于串口通讯的一个机械和电气接口标准(顶多是网络协议中的物理层),不是通讯协议,它们之间的几个不同点如下: 一、硬件管脚接口定义不同 二、工作方式不同 RS232: 3线全双工 RS…

在线教学软件推荐!一站式白板让线上教学更顺畅!

可以用于线上教学的软件,之前大家最为熟悉的莫过于使用各类视频会议软件,如腾讯会议、钉钉会议、飞书会议、Zoom 等,基于视频会议软件来共享电脑屏幕,然后再切换到本地的 PPT 演示文稿进行讲解。 但采用这个线上教学方案存在一些…

如何用磁力仪探测管缆的位置和埋深?

不论是航空磁测,还是海洋磁测,都是直接测量磁场总强度T,而后以总磁异常ΔT成图。磁异常总强度Ta是磁场总强度T与正常场T0的矢量差,即: Ta= T- T0 根据参考文献1,2的推导&#xff0c…

2024信息通信展览会|中国通信展览会|通讯大会

2024信息通信展览会|中国通信展览会|通讯大会 2024年中国国际信息通信展览会与同期举办的ICT.中国论坛于2024年9月25-27日在北京.国家会议中心隆重举办,共同奋力开启信息通信的新篇章。这是一场集交流、展示、共赢于一体的盛大盛典,为信息通信领域的企业…

保研线性代数机器学习基础复习2

1.什么是群(Group)? 对于一个集合 G 以及集合上的操作 ,如果G G-> G,那么称(G,)为一个群,并且满足如下性质: 封闭性:结合性:中性…