numpy(02 数据类型和数据类型转换)

numpy(01 入门) 

目录

一、Python NumPy 数据类型

1.1 NumPy 基本类型

1.2 数据类型对象 (dtype)

1.3 具体实例

二、Numpy数据类型转换 

2.1 浮点数据转换

2.2 整型数据转换

2.3 浮点数转整数


 

一、Python NumPy 数据类型

1.1 NumPy 基本类型

下表列举了常用 NumPy 基本类型。

名称描述
bool_布尔型数据类型(True 或者 False)
int_默认的整数类型(类似于 C 语言中的 long,int32 或 int64)
intc与 C 的 int 类型一样,一般是 int32 或 int 64
intp用于索引的整数类型(类似于 C 的 ssize_t,一般情况下仍然是 int32 或 int64)
int8字节(-128 to 127)
int16整数(-32768 to 32767)
int32整数(-2147483648 to 2147483647)
int64整数(-9223372036854775808 to 9223372036854775807)
uint8无符号整数(0 to 255)
uint16无符号整数(0 to 65535)
uint32无符号整数(0 to 4294967295)
uint64无符号整数(0 to 18446744073709551615)
float_float64 类型的简写
float16半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位
float32单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位
float64双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位
complex_complex128 类型的简写,即 128 位复数
complex64复数,表示双 32 位浮点数(实数部分和虚数部分)
complex128复数,表示双 64 位浮点数(实数部分和虚数部分)

numpy 的数值类型实际上是 dtype 对象的实例,并对应唯一的字符,包括 np.bool_,np.int32,np.float32,等等。

每个内建类型都有一个唯一定义它的字符代码如下:

1.2 数据类型对象 (dtype)

数据类型对象是用来描述与数组对应的内存区域如何使用,这依赖如下几个方面:

  • 数据的类型(整数,浮点数或者 Python 对象)
  • 数据的大小(例如, 整数使用多少个字节存储)
  • 数据的字节顺序(小端法或大端法)
  • 在结构化类型的情况下,字段的名称、每个字段的数据类型和每个字段对应的内存块的区域
  • 如果数据类型是子数组,它的形状和数据类型

字节顺序是通过对数据类型预先设定”<“或”>”来决定的。”<“意味着小端法(最高有效字节在最前面的方式称为大端法)。”>”意味着大端法(最低有效字节在最前面的方式成为小端法)。 

小端与大端的区别:

字节顺序高位字节存储位置低位字节存储位置
大端(Big-endian)低地址存高位字节高地址存低位字节
小端(Little-endian)低地址存低位字节高地址存高位字节

 dtype 对象是使用以下语法构造的:

numpy.dtype(object, align, copy)
  • object – 要转换为的数据类型对象
  • align – 如果为 true,填充字段使其类似 C 的结构体。
  • copy – 复制 dtype 对象 ,如果为 false,则是对内置数据类型对象的引用

1.3 具体实例

实例 1:转换为int32

import numpy as np
dt = np.dtype(np.int32)
print(dt)

运行结果: 

 

例 2:int8, int16, int32, int64 四种数据类型可以使用字符串 ‘i1’, ‘i2′,’i4′,’i8’ 代替

import numpy as np
dt = np.dtype('i4')
print(dt)

运行结果:

 

实例 3:字节顺序标注

import numpy as np
dt = np.dtype('<i4')
print(dt)

运行结果:

 

例 4:结构化数据类型

# 首先创建结构化数据类型
import numpy as np
dt = np.dtype([('age',np.int8)]) 
print(dt)

运行结果:

 

例 5:将数据类型应用于 ndarray 对象

import numpy as np
a = np.array([(10,),(20,),(30,)]) 
print(a)
print('-'*50)
dt = np.dtype([('age',np.int8)]) 
a = np.array([(10,),(20,),(30,)], dtype = dt) 
print(a)

运行结果:

 

例 6:类型字段名可以用于存取实际的 age 列

import numpy as np
dt = np.dtype([('age',np.int8)])
a = np.array([(10,),(20,),(30,)], dtype = dt)
print(a['age'])

运行结果:

 

例 7:下面的示例定义一个结构化数据类型 student,包含字符串字段 name,整数字段 age,及浮点字段 marks,并将这个 dtype 应用到 ndarray 对象。

import numpy as np
student = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')]) 
print(student)

运行结果:

 

例8:

import numpy as np
student = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')]) 
a = np.array([('abc', 21, 50),('xyz', 18, 75)], dtype = student) 
print(a)

运行结果: 

 

二、Numpy数据类型转换 

2.1 浮点数据转换

例1:生成一个浮点数组(浮点型默认是 float64

import numpy as np
a=np.random.random (4)
print(a)
print(a.dtype)
print(a.shape)

运行结果:

例2:改变dtype为 float32,数组长度翻倍

import numpy as np
a=np.random.random (4)
a.dtype ="float32"
print(a)
print(a.dtype)
print(a.shape)#看下面有关shape的注释

运行结果:

 

 shape 是 NumPy 中 ndarray 对象的一个属性,用于表示数组的维度(dimensions)和每个维度的大小(size)。它以元组的形式返回,元组的每个元素表示数组在相应维度上的大小。

shape的含义

  • 对于 一维数组shape 返回数组的长度(即元素的数量)。
  • 对于 二维数组shape 返回一个元组,其中第一个元素表示数组的行数,第二个元素表示列数。
  • 对于 三维及更高维数组shape 返回一个多元素的元组,其中每个元素表示数组在对应维度上的大小。 

例3:改变dtype= float,默认类型就是float64,数组长度也变回最初的4

import numpy as np
a=np.random.random (4)
a.dtype ="float"
print(a)
print(a.dtype)
print(a.shape)

运行结果: 

 

2.2 整型数据转换

把a变为整数 int64,生成长度为4的整型数组

例4: 

import numpy as np
a=np.random.random (4)
a.dtype="int64"
print(a)
print(a.dtype)
print(a.shape)

运行结果:

 

2.3 浮点数转整数

例5: 

import numpy as np
b=np.array([1 ,2 ,3 ,4 ])
print(b.dtype)

运行结果:

 

例6:用 astype(int) 得到整数,并且不改变数组长度

import numpy as np
b=np.array([1 ,2 ,3 ,4 ],dtype=np.int32)
print(b)
print(b.shape)
print(b.dtype)

运行结果:

 

 

 

 

 

 

 

 

 

 

 

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

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

相关文章

【雅思博客04】Silence please!

A: Those people in front of us are making so much noise. It’s so inconsiderate! B: Don’t worry about it; it’s not such a big deal. A: Oh... I can’t hear a thing! Excuse me, can you keep it down? C: Sure, sorry about that! A: Someone’s phone is ri…

【大语言模型_3】ollama本地加载deepseek模型后回答混乱问题解决

背景&#xff1a; 本地下载了DeepSeek-R1-Distill-Qwen-7B模型后&#xff0c;通过ollama create DeepSeek-R1-Distill-Qwen-7B -f ds7b.mf加载模型启动后回答混乱&#xff0c;无法使用。 解决方法 重新下载模型&#xff0c;选择了DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf 重…

nginx ngx_http_module(9) 指令详解

nginx ngx_http_module(9) 指令详解 nginx 模块目录 nginx 全指令目录 一、目录 1.1 模块简介 ngx_http_uwsgi_module&#xff1a;uWSGI支持模块&#xff0c;允许Nginx与uWSGI服务器进行通信。uWSGI是一种应用服务器协议&#xff0c;广泛用于Python Web应用的部署。通过该…

用PyInstaller构建动态脚本执行器:嵌入式Python解释器与模块打包 - 简明教程

技术场景&#xff1a; 需分发的Python工具要求终端用户可动态修改执行逻辑将Python环境与指定库&#xff08;如NumPy/Pandas&#xff09;嵌入可执行文件实现"一次打包&#xff0c;动态扩展"的轻量化解决方案。 ▌ 架构设计原理 1. 双模运行时识别 # 核心判断逻辑…

山石网科×阿里云通义灵码,开启研发“AI智造”新时代

近日&#xff0c;山石网科正式宣布全面接入阿里云通义灵码企业专属版&#xff0c;这标志着山石网科在研发智能化、自动化领域迈出重要一步&#xff0c;为研发工作注入强大的AI动力&#xff0c;实现多维度的效率飞跃。 此次合作&#xff0c;阿里云通义灵码依托强大的AI能力&…

《被讨厌的勇气》(六)

1.自由就是被别人讨厌。 2.毫不在意别人的评价、不害怕被别人讨厌、不追求被他人认可&#xff0c;如果不付出以上这些代价&#xff0c;那就无法贯彻自己的生活方式&#xff0c;也就是不能获得自由。 3.在意你的脸的只有你自己。 4.不去干涉别人的课题也不让别人干涉自己的课题.…

使用 PyTorch 实现标准卷积神经网络(CNN)

卷积神经网络&#xff08;CNN&#xff09;是深度学习中的重要组成部分&#xff0c;广泛应用于图像处理、语音识别、视频分析等任务。在这篇博客中&#xff0c;我们将使用 PyTorch 实现一个标准的卷积神经网络&#xff08;CNN&#xff09;&#xff0c;并介绍各个部分的作用。 什…

SpringBoot2.0整合Redis(Lettuce版本)

前言&#xff1a; 目前java操作redis的客户端有jedis跟Lettuce。在springboot1.x系列中&#xff0c;其中使用的是jedis, 但是到了springboot2.x其中使用的是Lettuce。 因为我们的版本是springboot2.x系列&#xff0c;所以今天使用的是Lettuce。关于jedis跟lettuce的区别&#…

qt + opengl 给立方体增加阴影

在前几篇文章里面学会了通过opengl实现一个立方体&#xff0c;那么这篇我们来学习光照。 风氏光照模型的主要结构由3个分量组成&#xff1a;环境(Ambient)、漫反射(Diffuse)和镜面(Specular)光照。下面这张图展示了这些光照分量看起来的样子&#xff1a; 1 环境光照(Ambient …

大模型工具大比拼:SGLang、Ollama、VLLM、LLaMA.cpp 如何选择?

简介&#xff1a;在人工智能飞速发展的今天&#xff0c;大模型已经成为推动技术革新的核心力量。无论是智能客服、内容创作&#xff0c;还是科研辅助、代码生成&#xff0c;大模型的身影无处不在。然而&#xff0c;面对市场上琳琅满目的工具&#xff0c;如何挑选最适合自己的那…

stream流常用方法

1.reduce 在Java中&#xff0c;可以使用Stream API的reduce方法来计算一个整数列表的乘积。reduce方法是一种累积操作&#xff0c;它可以将流中的元素组合起来&#xff0c;返回单个结果。对于计算乘积&#xff0c;你需要提供一个初始值&#xff08;通常是1&#xff0c;因为乘法…

pgAdmin4在mac m1上面简单使用(Docker)

问题 想要在本地简单了解一下pgAdmin4一些简单功能。故需要在本机先安装看一看。 安装步骤 拉取docker镜像 docker pull dpage/pgadmin4直接简单运行pgAdmin4 docker run --name pgAdmin4 -p 5050:80 \-e "PGADMIN_DEFAULT_EMAILuserdomain.com" \-e "PGAD…

ubuntu下安装TFTP服务器

在 Ubuntu 系统下安装和配置 TFTP&#xff08;Trivial File Transfer Protocol&#xff09;服务器可以按照以下步骤进行&#xff1a; 1. 安装 TFTP 服务器软件包 TFTP 服务器通常使用 tftpd-hpa 软件包&#xff0c;你可以使用以下命令进行安装&#xff1a; sudo apt update …

Softing线上研讨会 | 自研还是购买——用于自动化产品的工业以太网

| 线上研讨会时间&#xff1a;2025年1月27日 16:00~16:30 / 23:00~23:30 基于以太网的通信在工业自动化网络中的重要性日益增加。设备制造商正面临着一大挑战——如何快速、有效且经济地将工业以太网协议集成到其产品中。其中的关键问题包括&#xff1a;是否只需集成单一的工…

vscode创建java web项目

一.项目部署 1.shiftctrlp&#xff0c;选择java项目 2.选择maven create from arcetype 3.选择webapp 4.目录结构如下&#xff0c;其中index.jsp是首页 5.找到左下角的servers,添加tomcat服务器 选择 再选择&#xff1a; 找到你下载的tomcat 的bin目录的上一级目录&#x…

C语言指针学习笔记

1. 指针的定义 指针&#xff08;Pointer&#xff09;是存储变量地址的变量。在C语言中&#xff0c;指针是一种非常重要的数据类型&#xff0c;通过指针可以直接访问和操作内存。 2. 指针的声明与初始化 2.1 指针声明 指针变量的声明格式为&#xff1a;数据类型 *指针变量名…

DeepSeek R1生成图片总结2(虽然本身是不能直接生成图片,但是可以想办法利用别的工具一起实现)

DeepSeek官网 目前阶段&#xff0c;DeepSeek R1是不能直接生成图片的&#xff0c;但可以通过优化文本后转换为SVG或HTML代码&#xff0c;再保存为图片。另外&#xff0c;Janus-Pro是DeepSeek的多模态模型&#xff0c;支持文生图&#xff0c;但需要本地部署或者使用第三方工具。…

什么是Dubbo?Dubbo框架知识点,面试题总结

本篇包含什么是Dubbo&#xff0c;Dubbo的实现原理&#xff0c;节点角色说明&#xff0c;调用关系说明&#xff0c;在实际开发的场景中应该如何选择RPC框架&#xff0c;Dubbo的核心架构&#xff0c;Dubbo的整体架构设计及分层。 主页还有其他的面试资料&#xff0c;有需要的可以…

kafka消费能力压测:使用官方工具

背景 在之前的业务场景中&#xff0c;我们发现Kafka的实际消费能力远低于预期。尽管我们使用了kafka-go组件并进行了相关测试&#xff0c;测试情况见《kafka-go:性能测试》这篇文章。但并未能准确找出消费能力低下的原因。 我们曾怀疑这可能是由我的电脑网络带宽问题或Kafka部…

【大学生职业规划大赛备赛PPT资料PDF | 免费共享】

自取链接&#xff1a; 链接&#xff1a;https://pan.quark.cn/s/4fa45515325e &#x1f4e2; 同学&#xff0c;你是不是正在为职业规划大赛发愁&#xff1f; 想展示独特思路却不知如何下手&#xff1f; 想用专业模板却找不到资源&#xff1f; 别担心&#xff01;我整理了全网…