机器学习-4

news2024/11/13 23:42:06

文章目录

  • 前言
    • 数组创建
    • 切片索引
      • 索引
      • 遍历
      • 切片
      • 编程练习
  • 总结


前言

本篇将介绍数据处理 Numpy 库的一些基本使用技巧,主要内容包括 Numpy 数组的创建、切片与索引、基本运算、堆叠等等。


数组创建

在 Python 中创建数组有许多的方法,这里我们使用 Numpy 中的arange方法快速的新建一个数组:

import numpy as np
a = np.arange(5)

其中import numpy as np是指引入Numpy这个库,并取别名为np。之所以取别名,是为了代码编写的方便。a=np.arange(5)是指将数值0 1 2 3 4赋值给a这个变量,这样我们就快速的创建了一个一维数组。

创建多维数组的方法是:

import numpy as np
b = np.array([np.arange(6),np.arange(6)])

这里,我们使用两个arange方法,创建了两个1x6的一维数组,然后使用numpy的array方法,将两个一维数组组合成一个2x6的二维数组。从而达到了创建多维数组的目的。

numpy创建的数组可以直接复制,具体代码示例如下:

import numpy as np
x = [y for y in range(6)]
b=np.array([x]*4)

该段代码会创建一个4*6的数组。

本关的任务是,补全右侧编辑器中 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 *********#
    ret = np.zeros((m, n))
    #********** End **********#
    
    return ret

切片索引

索引

ndarray的索引其实和python的list的索引极为相似。元素的索引从0开始。代码如下:

import numpy as np
a中有4个元素,那么这些元素的索引分别为0123
a = np.array([2, 15, 3, 7])
打印第2个元素
索引1表示的是a中的第2个元素
结果为15
print(a[1])
b是个23列的二维数组
b = np.array([[1, 2, 3], [4, 5, 6]])
打印b中的第1行
总共就2行,所以行的索引分别为01
结果为[1, 2, 3]
print(b[0])
打印b中的第2行第2列的元素
结果为5
print(b[1][1])

遍历

ndarray的遍历方式与python的list的遍历方式也极为相似,示例代码如下:

import numpy as np
a = np.array([2, 15, 3, 7])
使用for循环将a中的元素取出来后打印
for element in a:
    print(element)
根据索引遍历a中的元素并打印
for idx in range(len(a)):
    print(a[idx])
b是个23列的二维数组
b = np.array([[1, 2, 3], [4, 5, 6]])
将b展成一维数组后遍历并打印
for element in b.flat:
    print(element)
根据索引遍历b中的元素并打印
for i in range(len(b)):
    for j in range(len(b[0])):
        print(b[i][j])

切片

ndarray的切片方式与python的list的遍历方式也极为相似,对切片不熟的同学也不用慌,套路很简单,就是用索引。

假设想要将下图中紫色部分切片出来,就需要确定行的范围和列的范围。由于紫色部分行的范围是0到2,所以切片时行的索引范围是0:3(索引范围是左闭右开);又由于紫色部分列的范围也是0到2,所以切片时列的索引范围也是0:3(索引范围是左闭右开)。最后把行和列的索引范围整合起来就是0:3, 0:3。当然有时为了方便,0可以省略,也就是[:3, :3]。
在这里插入图片描述

切片示例代码如下:

import numpy as np
a中有4个元素,那么这些元素的索引分别为0123
a = np.array([2, 15, 3, 7])
'''
将索引从1开始到最后的所有元素切片出来并打印
结果为[15  3  7]
'''
print(a[1:])
'''
将从倒数第2个开始到最后的所有元素切片出来并打印
结果为[3  7]
'''
print(a[-2:])
'''
将所有元素倒序切片并打印
利用第三个参数修改索引步长,默认为1,设置-1为倒序
结果为[ 7  3 15  2]
'''
print(a[::-1])
b是个23列的二维数组
b = np.array([[1, 2, 3], [4, 5, 6]])
'''
将第2行的第2列到第3列的所有元素切片并打印
结果为[[5 6]]
'''
print(b[1:, 1:3])
'''
将第2列到第3列的所有元素切片并打印
结果为[[2 3]
      [5 6]]
'''
print(b[:, 1:3])

编程练习

平台会对你编写的代码进行测试。你只需按要求完成get_roi(data, x, y, w, h)函数即可。其中:

data:待提取ROI的原始图像数据(其实就是个二维数组),类型为ndarray;

x: ROI的左上角顶点的行索引,类型为int;

y: ROI的左上角顶点的列索引,类型为int;

w: ROI的宽,类型为int;

h: ROI的高,类型为int。

测试用例是一个字典,字典中image部分表示原始图像的像素数据,x部分表示ROI的左上角顶点的行索引,y部分表示ROI的左上角顶点的列索引,w部分表示ROI的宽,h部分表示ROI的高。

测试输入:
{‘image’:[[1, 2, 255, 255, 0], [255, 255, 0, 0, 3]], ‘x’:0, ‘y’:1, ‘w’:2, ‘h’:1}

预期输出:

[[ 2 255 255] [255 0 0]]

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 *********#
    roi = data[x:x+h+1, y:y+w+1]
    return roi
    #********* End *********#

总结

以上就是对机器学习中的分片,切割,遍历的介绍。

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

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

相关文章

使用 Docker 部署 Answer 问答平台

1)介绍 GitHub:https://github.com/apache/incubator-answer Answer 问答社区是在线平台,让用户提出问题并获得回答。用户可以发布问题并得到其他用户的详细答案、建议或信息。回答可以投票或评分,有助于确定有用的内容。标签和分…

Redis 群集部署

1.关系型数据库 关系型数据库是一个结构化的数据库,创建在关系模型基础上,-般面向记录。它借助于集合代数等数学概念和方法来处理数据库中的数据。关系模型指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。现实世界中…

软件分层(数据结构/软件逻辑上分层+举例),相连节点的概念+如何相连,为什么是层状结构(软件分层,网络协议分层+梳理协议顺序),协议分层(打电话例子)

目录 软件分层 介绍 举例 类的继承 虚拟文件系统 线程接口封装 虚拟地址空间 总结 为什么是层状的 软件分层 网络协议 原因 梳理协议顺序 相连节点 协议分层 引入 示例 实际上 逻辑上 制定出协议 软件分层 介绍 通过将软件系统划分为不同的层次,每一层都有…

OpenHarmony、HarmonyOS打开编辑 PDF 等操作的三方组件使用教程

项目场景: 随着数字化时代的发展,PDF 文档成为广泛应用于各行业的重要文件格式。为了提高OpenHarmony/HarmonyOS生态系统的功能性和用户体验,我们需要一款支持打开、编辑PDF文件的应用程序。 使用户能够轻松打开、浏览和编辑PDF文件。该应用将充分利用OpenHarmony/HarmonyO…

Day20-磁盘管理

Day20-磁盘管理 1. cut 切:2. 磁盘历史和内外部物理结构介绍2.1 磁盘发展趋势和实现措施2.2 磁盘知识的体系结构2.3 机械磁盘的外部结构2.4 SSD固态硬盘的外部结构2.5 固态硬盘内部结构2.6 缓存在服务器各硬件上的速度和大小对比另类维度图解,从上到下由高速到低速&…

机器学习:集成学习(Python)

一、Adaboost算法 1.1 Adaboost分类算法 adaboost_discrete_c.py import numpy as np import copy from ch4.decision_tree_C import DecisionTreeClassifierclass AdaBoostClassifier:"""adaboost分类算法:既可以做二分类、也可以做多分类&#…

数字化转型导师坚鹏:BLM证券公司数字化转型战略

BLM证券公司数字化转型战略 ——以BLM模型为核心,实现知行果合一 课程背景: 很多证券公司存在以下问题: 不知道如何系统地制定证券公司数字化转型战略? 不清楚其它证券公司数字化转型战略是如何制定的? 不知道…

Leetcode560. 和为 K 的子数组 -hot100

题目&#xff1a; 代码(首刷看解析 2024年3月2日&#xff09;&#xff1a; class Solution { public:int subarraySum(vector<int>& nums, int k) {// 前缀和 遍历int res 0;unordered_map<int, int> sumPre;int sum 0;// 关键&#xff1a;初始化sumPre[0]…

艺术家林曦:新的一年|开启人生的最佳竞技状态吧!

开年大吉呀&#xff5e;新的一年&#xff0c;你准备好如何启程了吗&#xff1f;    暄桐是一间传统美学教育教室&#xff0c;创办于2011年&#xff0c;艺术家林曦是创办人和授课老师&#xff0c;教授以书法为主的传统文化和技艺&#xff0c;皆在以书法为起点&#xff0c;亲…

element-plus 的el-img组件访问oss图片自动拼接前端地址

这是我的组件代码 <el-image style"width: 100px; height: 100px" :src"scope.row.logo" />访问时候 竟然凭借上了前端的地址端口 原来是我的oss服务是使用了域名做cdn加速的 内容分发网络&#xff08;CDN&#xff09;或者服务器配置&#xff0c;可…

通过修改host文件来访问GitHub

前言&#xff1a; 由于国内环境的原因&#xff0c;导致我们无法流畅的访问GitHub&#xff0c;。 但是我们可以采取修改host文件来实现流畅访问。 缺点&#xff1a;需要不定时的刷新修改。 操作流程 一、查询IP地址 以下地址可以查询ip地址 http://ip.tool.chinaz.com/ htt…

艾尔登法环备份存档方法

1.PC端使用WinR输入%AppData%\EldenRing 2.如图创建文件夹“我这取名叫备份存档”&#xff0c;将其中的三个文件复制到新建的文件夹中 3.理论上只需要备份替换ER0000.sl2文件即可

《Spring Security 简易速速上手小册》第9章 测试与维护 (2024 最新版)

文章目录 9.1 编写安全测试9.1.1 基础知识9.1.2 重点案例&#xff1a;保护 REST API9.1.3 拓展案例 1&#xff1a;自定义登录逻辑测试9.1.4 拓展案例 2&#xff1a;CSRF 保护测试 9.2 Spring Security 升级和维护9.2.1 基础知识9.2.2 重点案例&#xff1a;适配新的密码存储格式…

智能驾驶规划控制理论学习02-基于搜索的路径规划方法

目录 一、路径搜索问题 二、图论基础 三、图搜索方法 1、广度优先搜索&#xff08;BFS&#xff09; bfs与dfs的区别 bfs的搜索过程 bfs的算法实现 2、迪杰斯特拉算法&#xff08;Dijkstra&#xff09; 核心思想 优先级队列 Dijkstra搜索过程 Dijkstra优缺点…

计算机视觉基础知识(十六)--图像识别

图像识别 信息时代的一门重要技术;目的是让计算机代替人类处理大量的物理信息;随着计算机技术的发展,人类对图像识别技术的认识越来越深刻;图像识别技术利用计算机对图像进行处理\分析\理解,识别不同模式的目标和对象;过程分为信息的获取\预处理\特征抽取和选择\分类器设计\分…

Mybatis | 动态SQL

目录: 动态SQL中的 “元素” :\<if>元素\<choose>、\<when>、\<otherwise>元素\<where>、\<trim>元素\<set>元素\<foreach>元素\<bind>元素 作者简介 &#xff1a;一只大皮卡丘&#xff0c;计算机专业学生&#xff0c;正…

【Python】进阶学习:pandas--如何根据指定条件筛选数据

【Python】进阶学习&#xff1a;pandas–如何根据指定条件筛选数据 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希望…

什么是片内片间均匀性?

均匀性在芯片制程的每一个工序中都需要考虑到&#xff0c;包括薄膜沉积&#xff0c;刻蚀&#xff0c;光刻&#xff0c;cmp&#xff0c;离子注入等。较高的均匀性才能保证芯片的产品与性能。那么片内和片间非均匀性是什么&#xff1f;如何计算&#xff1f;有什么作用呢&#xff…

热点一线总有神秘小盒现身,到底有什么神秘之处?高人气随身WiFi第一名,2024最值得购买的随身WiFi

近日&#xff0c;一位好事儿的网友突然将多个新闻热点的截图发在了自己的社交平台上&#xff0c;引起了大家的广泛关注。原来在这些记者报道一线新闻的时候&#xff0c;总有一个神秘小盒子在若隐若现。后经网友深扒得知这是格行品牌旗下的大热产品——格行随身WiFi。为什么格行…

【C++ AVL树】

文章目录 AVL树AVL树的概念AVL树节点的定义AVL树的插入AVL树的旋转右单旋左单旋左右双旋右左双旋 代码实现 总结 AVL树 AVL树的概念 二叉搜索树在顺序有序或接近有序的情况下&#xff0c;而插入搜索树将退化为单叉树&#xff0c;此时查找的时间复杂度为O(n)&#xff0c;效率低…