三、机器学习基础知识:Python常用机器学习库(Numpy第一部分)

news2024/11/17 3:46:58

文章目录

  • 1、Numpy定义
  • 2、ndarray对象
  • 3、Numpy数据类型
  • 4、Numpy数组类型

1、Numpy定义

Numpy是Numberical Python的简称,是用来进行高性能计算与分析的基础包,是Python中重要的扩充库。它支持高维度数组与矩阵运算,也针对数组运算提供了大量的数学函数库。Numpy运算效率极好,是大量机器学习框架的基础库。
使用Numpy,开发人员可以很方便地执行数组运算、逻辑运算、傅里叶变换和图形图像操作。Numpy数组地运算效率优于Python的标准List类型,而且在代码中使用Numpy可以省去很多繁琐的操作语句,代码更将简洁。
一般使用如下方式引入Numpy库:

import numpy as np

2、ndarray对象

Numpy的强大功能在于底层的ndarray结构,该结构可以生成N维数组对象。
ndarray对象是一系列同类型数据的集合,下标索引从0开始,是一个用于存放同类型元素的多维数组。ndarray中的每个元素在内存中都具有相同大小的存储区域。
ndarray可以通过对数组建立索引或切片来访问数组内容,也可以使用ndarray的方法和属性来访问和修改ndarray内容。
ndarray中的相关属性如下:

  1. shape(数组形状):表示数组各维大小的整数元组。
  2. dtype(数据类型):描述数组的类型对象。
  3. data(数组数据):一个指向内存中数据的指针。
  4. strides(跨度):表示当前维度移动到下一个位置需要跨越的字节数,即当前维度的宽。
  5. order(数组顺序):访问数组元素的主顺序,“C”为行主序,“F”为列主序。

在Numpy模块中,提供了ndarray()和array()两个函数,都可以用来建立一个ndarray。其中ndarray函数属于底层的方法,一般都是使用darray()函数进行创建,创建的语法格式如下:

numpy.array(object,dtype=None,copy=True,order=None,subox=False,ndmin=0)

参数介绍:

  1. object:数组或嵌套的数列。
  2. dtype:数组元素的数据类型。可选。
  3. order:创建数组的样式,C为行方向,F为列方向,A为任意方向(默认)。
  4. ndmin:指定所生成数组应具有的最小维度。
    数组的创建与基本操作:
import numpy as np
a = np.array([1,2,3])  #创建一维数组并输出
print(a)
print(type(a))

在这里插入图片描述

a = np.array([[1,2],[3,4]]) #创建二维数组并输出
print(a)
print(a.shape)

在这里插入图片描述

a = np.array([1,2,3,4],ndmin=2) #创建数组并设置数组的最小维度为2
print(a)

在这里插入图片描述

a = np.array([1,2,3,4],dtype=np.complex128) #创建数组并设置其数组数据类型为complex128
print(a)

在这里插入图片描述

3、Numpy数据类型

Numpy内置了24种数组标量类型,也支持Python的基本数组类型。

名称描述
bool_布尔型,True或False
int8有符号字节类型,范围为-128~127
int16有符号16位整数,范围为-32768~32767
int32有符号32位整数
int64有符号64位整数
unit8无符号字节类型,范围为0~255
unit16无符号16位整数,范围为0~65535
unit32无符号32位整数
unit64无符号64位整数
float_64位浮点数,同float64
float1616位浮点数
float3232位浮点数
float6464位(双精度)浮点数
complex_128位复数,同complex128
complex6464位复数
complex128128位复数

对于每种数据类型,Numpy还提供了同名的类型函数,如float16()、int32()等,可以用来创建该类型的数据对象,也可以用来转换数据对象的数据类型。
类型函数的使用:

x=np.int32(2)
print('x为:',x)
print('x对象的data属性:',x.data)
print('x对象的size属性:',x.size)
print('x对象的维数:',x.ndim)
y=np.bool_(x)
print('转换为bool类型的x为:',y)
z=np.float16(y)
print('转换为folat16类型的y为:',z)

在这里插入图片描述

除了类型函数外,通常情况下一般建议使用Numpy种的dtype对象指定数据类型。
构建dtype对象的语法如下:

numpy.dtype(object,align,copy)

相关参数属性如下:

  1. object:要转换为dtype对象的数据对象。
  2. align:如果为True,则填充字段使其类似C的结构体。
  3. copy:指明是否复制dtype对象,如果为False,则是对内置数据类型对象的引用。

使用dtype对象设置数据类型:

x=np.int32(1)
y=np.array(x,dtype="bool_")
print('转换为bool类型的x为:',y)
z=np.array(y,dtype="float16")
print('转换为folat16类型的y为:',z)

在这里插入图片描述

有些数据类型有简写,例如int8,int16,int32,int64四种数据类型可以使用字符串’i1’,‘i2’,‘i4’,'i8’简写代替。
使用i4字符串代替int32类型:

dt=np.dtype('i4')
print(dt)

在这里插入图片描述

在数组建立之后,也可以使用Numpy中数组附带的astype()方法修改其数据类型。语法格式如下:

array.astype(dtype,order='K'.casting='unsafe',subok=True,copy=True)

使用astype()修改数据类型:

x=np.int32(1)
y1 = x.astype("float32")
print('转换为folat32类型的x为:',y1)
y2 = x.astype(np.float32)
print('转换为folat32类型的x为:',y2)

在这里插入图片描述

在上述语句中x.astype(float)和x.astype(np.float)运行结果相同。常见的Python对象与Numpy对象的对应表如下,其他数据类型没有与Python等效的对应表。

Python对象dtype对象
intnumpy.int_
boolnumpy.bool_
floatnumpy.folat_
complexnumpy.complex_

4、Numpy数组类型

在Numpy数组中,常用的术语主要有两个。
(1)轴(Axis):每个线性数组称为一个轴,轴即数组的维度(Dimensions)。例如,将二维数组看作一维数组,此一维数组中每个元素又是一个一维数组,则每个一维数组是NumPy 中的一个轴。第一个轴相当于底层数组,第二个轴是底层数组中的数组。
(2)秩(Rank):秩描述 NumPy 数组的维数,即轴的数量。一维数组的秩为 1,二维数组的秩为 2,以此类推。
例如[0,1,2]是一维数组,只有一个轴,其秩为1,轴长度为3。[[1,2,3],[3,4,5]]是一个二维数组,数组的秩为2,具有两个轴,其中第一个轴(维度)的长度为2,第二个轴(维度)的长度为3。
在使用的时候可以声明 axis。如果axis=0,表示按第0轴方向操作,即对每列进行操作;如果 axis=1,表示按第1轴方向操作,即对每行进行操作。
使用axis参数进行轴向操作:

arr1=np.array([[1,2,3],[4,5,6]]) 
print(arr1)
print(arr1.sum(axis=0)) #进行垂直(列)方向的求和
print(arr1.sum(axis=1)) #进行行方向的求和

在这里插入图片描述

此外在Numpy中ndarray具有关于数组的相关基本属性,可以通过相关参数进行查看,常见属性如下:

参数属性
ndarray.ndim秩、轴的数量
ndarray.shape数组的形状
ndarray.size数组元素的总个数
ndarray.dtype数组元素类型
ndarray.itemsize每个元素的大小
ndarray.data实际数组元素

上述相关参数的使用:

arr2=np.array([[1,2,3],[4,5,6]]) 
print(arr2.ndim) #显示轴的数量
print(arr2.shape) #显示形状
arr2.shape=(3,2) 
print(arr2) #调整形状
print(arr2.size) #显示元素总个数
print(arr2.dtype) #显示数组元素类型
print(arr2.itemsize) #显示每个元素大小
print(arr2.data)  #显示实际数组元素

在这里插入图片描述

此外还可以使用reshape函数对数组进行变形重构,调整数组形状,其语法格式如下:

numpy.reshape(arr,newshape,order='C')

使用reshape调整数组形状:

arr3 = np.array([1,2,3,4,5,6,7,8])
print(arr3.ndim) #显示秩
arr4 = arr3.reshape(2,2,2)
print(arr4)
print(arr4.ndim) #显示秩

在这里插入图片描述
后续内容:
三、机器学习基础知识:Python常用机器学习库(Numpy第二部分)

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

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

相关文章

gradle依赖导入,jar方式

新项目使用了gardle方式导入依赖,但是很不巧我都没有听过这个东西,然后就紧急的学了学,发现其实也听见的,然后准备动手试一下 问题 导入dm数据库驱动,换了好几种写法也不大行,然后发现我之前的项目也是使…

IDERA ER/Studio Data Professional 19.3.5 Crack

IDERA ER/Studio 数据架构师? 它能够从用户的单个界面创建和管理多个数据库平台的数据模型。信息建模者和架构师希望对与小型企业需求相关的不同数据高度做出反应。有些关键行动可能需要他们的关注。 特点: 构建数据模型作为增长周期的一部分。发现并记…

Redis的C客户端(hiredis库)使用

文章目录 1、Ubuntu安装redis服务端2、hiredis库的安装3、同步API接口的使用3.1、连接redis数据库redisConnect3.2、发送需要执行的命令redisCommand3.3、redisCommandArgv函数3.4、redisAppendCommand*函数支持管道命令3.5、释放资源3.6、同步连接代码 3.7、异步连接4、redis连…

Docker+jenkinsPipeline 运行实现python自动化测试

一、实现思路 在 Linux 服务器安装 docker创建 jenkins 容器jenkins 中创建 pipeline 项目根据自动化项目依赖包构建 python 镜像(构建自动化 python 环境)运行新的 python 容器,执行 jenkins 从仓库中拉下来的自动化项目执行完成之后删除容器 二、环境准备 Lin…

centos7上 ytalk 命令找不到?yum没有ytalk的软件包

1.描述 [rootoomcserver ~]# yum search ytalk Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager This system is not registered with an entitlement server. You can use subscription-manager to register. Repodata is over 2 weeks …

一文搞懂到底什么是元宇宙

一、背景 2021年,“元宇宙”是科技界的开端。 2021”元宇宙”这个词在Facebook更名后被点燃了,无疑是21世纪科技界最爆的起点。各式各样的定义、解读都出现了,有人说它是炒作,甚至是骗局,但也有人说它就是互联网的未…

公众号点击原文下载文件怎么设置

作为微信生态下的产品,公众号推文中添加外部超链接的能力,多年一直没有开放给广大的运营者,只有开通了微信支付的服务号,才能在公众号文章正文添加链接,对于经常在公众号分享课件资料或者需要添加各种申请表的运营者来…

信号采样基本概念 —— 7.数模转换(DAC ADC)

文章目录 数字转模拟(DAC)一个简单的数字转模拟方案 模拟转数字(ADC) 数字转模拟(DAC) 通常来说,我们在设备上存储的数据是以二进制进行传输的,但是当我们试图将数据传输到更远的地…

《深入理解计算机系统》(1):系统组成

一、系统硬件组成 1、控制器(CPU):解释和执行内存中的指令 (1)、控制器 程序控制器:指令指针,指向主存中的机器语言指令,为一个字大小的存储设备或寄存器。 指令寄存器、指令译码器、…

基于docker+Keepalived+Haproxy高可用前后的分离技术

基于dockerKeepalivedHaproxy高可用前后端分离技术 架构图 服务名docker-ip地址docker-keepalived-vip-iphaproxy-01docker-ip自动分配 未指定ip192.168.31.252haproxy-02docker-ip自动分配 未指定ip192.168.31.253 安装haproxy 宿主机ip 192.168.31.254 宿主机keepalived虚…

k8s-9 ingress-nginx 特性

TLS加密 创建证书 测试 auth认证 创建认证文件 rewrite重定向 进入域名 会自动重定向hostname.html 示例二: 测试 后面必须跟westos 这个关键字 canary金丝雀发布 基于header灰度 场景:版本的升级迭代,比如一个service 升级到另…

react学习之---jsx转成虚拟dom的过程

jsx----经过Bebal编译返回可供React.createElement()可调用的对象—React.createElement调用后生成虚拟dom—diff算法—生成新的真实dom 经过babel编译: import {greet} from ‘./utils’; const App {greet(‘scott’)}; ReactDOM.render(App, document.getEl…

芯引擎·新力量 | 第五届浦东新区长三角集成电路技能邀请赛圆满落幕

9月27日, 2023年全国工业和信息化技术技能大赛上海选拔赛、上海职工职业技能系列赛暨第五届浦东新区长三角集成电路技能邀请赛汽车芯片设计竞赛及颁奖典礼在上海集成电路设计产业园举办,上海市经济和信息化委员会人事教育处处长黄春华,上海市…

ESP32网络开发实例-Web服务器控制GPIO

Web服务器控制GPIO 文章目录 Web服务器控制GPIO1、软件准备2、硬件准备3、代码实现本文将介绍如何Arduino IDE编程环境创建一个具有ESP32的独立web服务器,ESP32控制输出(两个LED)。可以通过作为本地网络上的浏览器的任何设备访问。下面将逐步介绍如何创建web服务器以及代码的…

【Redis】Redis的几个应用场景(string数据类型的应用)

Redis的几个应用场景 缓存功能 ⽐较典型的缓存使⽤场景,其中Redis作为缓冲层,MySQL作为存储层,绝⼤部分请求的数据都是从Redis中获取。由于Redis具有⽀撑⾼并发的特性,所以缓存通常能起到加速读写和降低后端压⼒的作⽤。 计数功能…

MS2400隔离式调制器可pin对pin兼容AD7400

MS2400是一款二阶Σ-Δ调制器,集成片上数字隔离器,能将模拟输入信号转换为高速1位码流。可pin对pin兼容AD7400,可兼容AMC1303。调制器对输入信号连续采样,无需外部采样保持电路。模拟信号输入满量程为320mV,转换后的数…

物联网入门系列(一):快速搭建一站式数据存储与实时分析平台

本系列文章将以教程形式介绍物联网领域用户在安装部署、分布式数据库设计、数据写入和查询、流计算和高可用测试等过程中的常见问题、相应的解决方案与注意事项,以帮助新用户快速入门,体验 DolphinDB 的极致性能。 本次介绍内容为——如何快速搭建一站式…

pgpool密码验证失败问题

当使用命令 psql -p 9999 -U postgres -d postgres 登录pgpool时 出现错误:md5 authentication failed 认证问题 推测问题: 1.密码设置错误 2.密码加密方式不一致 在主库操作 查看用户密码 select rolname,rolpassword from pg_authid 可以看出之前密码…

3561-24-8|荧光染料6-fam(Br4)|可作为成像剂

产品简介:6-fam(Br4)是一种荧光染料,广泛应用于生物医学领域中的荧光探针、标记物和成像剂等方面。其分子结构独特,具有良好的荧光量子产率和稳定性,能够在生物体内快速、准确地标记和追踪生物分子和细胞。其优异的荧光性能和化学…