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.mzph.cn/news/776732.shtml

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

相关文章

MySQL的主从复制和读写分离

目录 一、MySQL的主从复制 1、MySQL主从复制的原理 1.1 MySQL的复制类型 1.2 MySQL主从复制的工作过程 1.3 MySQL主从复制延迟 1.3.1 原因 1.3.2 解决方案 2、搭建MySQL的主从复制 实验环境 实验前提 ①Mysql主从服务器时间同步 ②主服务器的mysql配置 ③从服务器的…

Linux下javaweb项目部署

javaweb项目部署测试 测试环境:centos7 下载安装jdk rpm -ivh jdk-8u131-linux-x64.rpm 下载安装MySQL wget https://downloads.mysql.com/archives/get/p/23/file/mysql-community-server-5.7.33-1.el7.x86_64.rpm https://downloads.mysql.com/archives/get/p…

AI预测福彩3D第19弹【2024年3月27日预测--第5套算法开始计算第1次测试】

今天早上,突然做了一个大胆的决定,直接用新的算法来搞4码定位,新的算法融合了冷温热的趋势分析,让我自己搭建的AI深度学习模型来预测相关号码的冷温热走势,并赋予相关权重,然后通过权重来进行打分排名。当然…

9.HelloWorld案例常见问题

文章目录 一、BUG二、BUG的解决三、HelloWorld常见问题 一、BUG BUG(小甲虫)。计算机刚开始出现的时候,因为体积比较大,一些小虫子很容易转进去。有一天有一只蟑螂钻到了计算机当中,从而导致计算机不能正常运行&#…

vue3服务端渲染警告解决----DefinePlugin

Bundler 构建功能标志 有关 vuejs.org 的详细参考 esm-bundlerVue 的构建公开了可以在编译时覆盖的全局特性标志: __VUE_OPTIONS_API__ 违约:true启用/禁用选项 API 支持 __VUE_PROD_DEVTOOLS__ 违约:false在生产环境中启用/禁用 devtools 支…

2024/3/27打卡更小的数(十四届蓝桥杯)——区间DP

目录 题目 思路 代码 题目 思路 题目说求数组某个区间中的数进行翻转,由于区间选择多,首先想到DP问题。 第一版想到的方法(错误的),当进行状态计算的时候,无法判定区间是否翻转后满足要求,…

c++|string模拟实现

目录 一、string.h 二、string.cpp 三、Test.cpp 对string的各种接口进行一个简易版的模拟实现,在模拟实现完之后对string的底层实现有了进一步的理解,了解大佬的编程写法思路。也算是对string有了一个小总结。 一、string.h 接口的声明。放在.h文件中…

MySQL安装和配置(超详细)

👨‍💻作者简介:👨🏻‍🎓告别,今天 📔高质量专栏 :☕java趣味之旅 欢迎🙏点赞🗣️评论📥收藏💓关注 💖衷心的希…

武汉星起航公司助力零经验新手卖家征战亚马逊跨境电商市场

在数字化浪潮的推动下,亚马逊跨境电商行业正逐渐成为众多创业者和企业家们的新战场。然而,对于零经验的新手卖家而言,这片广袤的电商海洋无疑充满了未知与挑战。在这个关键时刻,武汉星起航公司以其专业的服务和深厚的行业积累&…

day 36 贪心算法 part05● 435. 无重叠区间 ● 763.划分字母区间 ● 56. 合并区间

一遍过。首先把区间按左端点排序,然后右端点有两种情况。 假设是a区间,b区间。。。这样排列的顺序,那么 假设a[1]>b[0],如果a[1]>b[1],就应该以b[1]为准,否则以a[1]为准。 class Solution { public:static bo…

老阳分享:视频号带货怎么做?有哪些方法?

在数字化浪潮中,视频号带货成为了一种新兴的商业模式,它结合了视频内容的吸引力和电商销售的便捷性,为品牌和商家带来了无限商机。那么,视频号带货究竟应该怎么做?又有哪些有效的方法呢? 首先,视频号带货的核心在于内…

行为管理设置能监控或者检测哪些东西

3 月 27 日,国新办举行“推动高质量发展”系列主题新闻发布会,浙江省省长王浩:全省市场经营主体 1040 万户,相当于平均每 6.5 个浙江人就有 1 个老板。 不由让小编想到,这么多老板,那么老板创办企业也怪不容…

【JavaEE】初识线程,线程与进程的区别

文章目录 ✍线程是什么?✍线程和进程的区别✍线程的创建1.继承 Thread 类2.实现Runnable接口3.匿名内部类4.匿名内部类创建 Runnable ⼦类对象5.lambda 表达式创建 Runnable ⼦类对象 ✍线程是什么? ⼀个线程就是⼀个 “执行流”. 每个线程之间都可以按…

大数据开发(离线实时音乐数仓)

大数据开发(离线实时音乐数仓) 一、数据库与ER建模1、数据库三范式2、ER实体关系模型 二、数据仓库与维度建模1、数据仓库(Data Warehouse、DW、DWH)1、关系型数据库很难将这些数据转换成企业真正需要的决策信息,原因如…

【快速解决】解决谷歌自动更新的问题,禁止谷歌自动更新,如何防止chrome自动升级 chrome浏览器禁止自动升级设置方法

目录 问题描述 解决方法 1、搜索栏搜索控制面板 2、搜索:服务 ​编辑 3、点击Windows工具 4、点击服务 ​5、禁止谷歌更新 问题描述 由于我现在需要装一个谷歌的驱动系统,但是目前的谷歌驱动系统的版本都太旧了,谷歌自身的版本又太新了…

上海:6月1日起取消企业复工复产白名单制

财经新闻5月29日消息:上海市人民政府关于印发《上海市加快经济恢复振兴行动计划》的通知。 《方案》包括千方百计缓解各类市场主体困难,全面有序推进复工复产和市场复工复产,多措并举稳外资稳外贸,大力促进消费加速复苏&#xff0…

argocd cli工具使用

一、前言 ragocd除了使用web界面操作之外,也可以通过argocd cli工具进行操作,关于集群创建、gitlab仓库创建、app创建都是可以通过yaml 文件去操作,使用web界面创建的操作也需要使用argocd cli工具进行备份 二、使用 在argocd部署的章节已经…

Windows安装Odoo结合内网穿透实现公网访问本地企业管理系统

文章目录 前言1. 下载安装Odoo:2. 实现公网访问Odoo本地系统:3. 固定域名访问Odoo本地系统 前言 Odoo是全球流行的开源企业管理套件,是一个一站式全功能ERP及电商平台。 开源性质:Odoo是一个开源的ERP软件,这意味着企…

盏燕生物科技将出席2024第七届燕窝天然滋补品博览会

参展企业介绍 深圳市盏燕生物科技有限公司,办公室地址位于中国第一个经济特区,鹏城深圳,深圳市龙岗区平湖街道禾花社区富安大道18号亚钢工贸大楼1栋1017A,我公司主要提供一般经营项目是:初级农产品、海产品、化妆品、…

R使用netmeta程序包实现生存数据的频率学网状meta分析

之前的推文系统的介绍了使用netmeta包实现对二分类变量、连续型变量和罕见事件的网状meta分析。今天的文章介绍如何使用netmeta程序包实现生存数据的频率学网状meta分析,用来评估6种免疫疗法( Camrelizumab、Tislelzumab、Toripalimab、Sintilimab、Pemb…