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

在这里插入图片描述


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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习 - PyTorch基本流程 (代码)

直接上代码 import torch import matplotlib.pyplot as plt from torch import nn# 创建data print("**** Create Data ****") weight 0.3 bias 0.9 X torch.arange(0,1,0.01).unsqueeze(dim 1) y weight * X bias print(f"Number of X samples: {len(…

小狐狸JSON-RPC:钱包连接,断开连接,监听地址改变

detect-metamask 创建连接,并监听钱包切换 一、连接钱包,切换地址(监听地址切换),断开连接 使用npm安装 metamask/detect-provider在您的项目目录中: npm i metamask/detect-providerimport detectEthereu…

基于Java在线考试系统系统设计与实现(源码+部署文档)

博主介绍: ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到 Java项目精品实…

快速上手Spring Cloud 六:容器化与微服务化

快速上手Spring Cloud 一:Spring Cloud 简介 快速上手Spring Cloud 二:核心组件解析 快速上手Spring Cloud 三:API网关深入探索与实战应用 快速上手Spring Cloud 四:微服务治理与安全 快速上手Spring Cloud 五:Spring …

Qt_day4:2024/3/25

作业1: 完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面 如果账号和…

新能源充电桩站场AI视频智能分析烟火检测方案及技术特点分析

新能源汽车充电起火的原因多种多样,涉及技术、设备、操作等多个方面。从技术层面来看,新能源汽车的电池管理系统可能存在缺陷,导致电池在充电过程中出现过热、短路等问题,从而引发火灾。在设备方面,充电桩的设计和生产…

吴恩达深度学习笔记:浅层神经网络(Shallow neural networks)3.9-3.11

目录 第一门课:神经网络和深度学习 (Neural Networks and Deep Learning)第三周:浅层神经网络(Shallow neural networks)3.9 神 经 网 络 的 梯 度 下 降 ( Gradient descent for neural networks) 第一门课:神经网络和…

安防监控视频汇聚平台EasyCVR在银河麒麟V10系统中的启动异常及解决方法

安防监控视频平台EasyCVR具备较强的兼容性,它可以支持国标GB28181、RTSP/Onvif、RTMP,以及厂家的私有协议与SDK,如:海康ehome、海康sdk、大华sdk、宇视sdk、华为sdk、萤石云sdk、乐橙sdk等。平台兼容性强,支持Windows系…

【数据结构与算法】直接插入排序和希尔排序

引言 进入了初阶数据结构的一个新的主题——排序。所谓排序,就是一串记录,按照其中的某几个或某些关键字的大小(一定的规则),递增或递减排列起来的操作。 排序的稳定性:在一定的规则下,两个值…

基于springboot实现校园周边美食探索及分享平台系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现园周边美食探索及分享平台系统演示 摘要 美食一直是与人们日常生活息息相关的产业。传统的电话订餐或者到店消费已经不能适应市场发展的需求。随着网络的迅速崛起,互联网日益成为提供信息的最佳俱渠道和逐步走向传统的流通领域,传统的…

【漏洞复现】chatgpt pictureproxy.php SSRF漏洞(CVE-2024-27564)

0x01 漏洞概述 ChatGPT pictureproxy.php接口存在服务器端请求伪造 漏洞(SSRF) ,未授权的攻击者可以通过将构建的 URL 注入 url参数来强制应用程序发出任意请求。 0x02 测绘语句 fofa: icon_hash"-1999760920" 0x03 漏洞复现 G…

OSCP靶场--Codo

OSCP靶场–Codo 考点 1.nmap扫描 ## ┌──(root㉿kali)-[~/Desktop] └─# nmap 192.168.229.23 -Pn -sV -sC --min-rate 2500 Starting Nmap 7.92 ( https://nmap.org ) at 2024-03-25 05:04 EDT Nmap scan report for 192.168.229.23 Host is up (0.35s latency). Not sh…

基于龙芯2k1000 mips架构ddr调试心得(二)

1、内存控制器概述 龙芯处理器内部集成的内存控制器的设计遵守 DDR2/3 SDRAM 的行业标准(JESD79-2 和 JESD79-3)。在龙芯处理器中,所实现的所有内存读/写操作都遵守 JESD79-2B 及 JESD79-3 的规定。龙芯处理器支持最大 4 个 CS(由…

基于Hive的天气情况大数据分析系统(通过hive进行大数据分析将分析的数据通过sqoop导入到mysql,通过Django基于mysql的数据做可视化)

基于Hive的天气情况大数据分析系统(通过hive进行大数据分析将分析的数据通过sqoop导入到mysql,通过Django基于mysql的数据做可视化) Hive介绍: Hive是建立在Hadoop之上的数据仓库基础架构,它提供了类似于SQL的语言&…

让IIS支持.NET Web Api PUT和DELETE请求

前言 有很长一段时间没有使用过IIS来托管应用了,今天用IIS来托管一个比较老的.NET Fx4.6的项目。发布到线上后居然一直调用不同本地却一直是正常的,关键是POST和GET请求都是正常的,只有PUT和DELETE请求是有问题的。经过一番思考忽然想起来了I…

Spring Cloud+Spring Alibaba笔记

Spring CloudSpring Alibaba 文章目录 Spring CloudSpring AlibabaNacos服务发现配置中心 OpenFeign超时机制开启httpclient5重试机制开启日志 SeataSentinel流量控制熔断降级热点控制规则持久化集成 OpenFeign集成 Gateway MicrometerZipKinGateway路由断言过滤器 Nacos 服务…

Spring用到了哪些设计模式?

目录 Spring 框架中⽤到了哪些设计模式?工厂模式单例模式1.饿汉式,线程安全2.懒汉式,线程不安全3.懒汉式,线程安全4.双重检查锁(DCL, 即 double-checked locking)5.静态内部类6.枚举单例 代理模…

C++超市商品管理系统

一、简要介绍 1.本项目为面向对象程序设计的大作业,基于Qt creator进行开发,Qt框架版本6.4.1,编译环境MINGW 11.2.0。 2.项目结构简介:关于系统逻辑部分的代码的头文件在head文件夹中,源文件在s文件夹中。与图形界面…

算法---动态规划练习-6(地下城游戏)

地下城游戏 1. 题目解析2. 讲解算法原理3. 编写代码 1. 题目解析 题目地址:点这里 2. 讲解算法原理 首先,定义一个二维数组 dp,其中 dp[i][j] 表示从位置 (i, j) 开始到达终点时的最低健康点数。 初始化数组 dp 的边界条件: 对…