当前位置: 首页 > news >正文

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)

运行结果:

 

 

 

 

 

 

 

 

 

 

 

相关文章:

  • “深入浅出”系列之C++:(22)asio库
  • 服务器部署基于Deepseek的检索增强知识库
  • 嵌入式硬件篇---常用的汇编语言指令
  • Mini-Omni2
  • java防抖,防止表单重复提交,aop注解形式
  • deepseek帮我设计物理量采集单片机口保护电路方案
  • 什么是Baklib云内容中台?
  • chrome V3插件开发,调用 chrome.action.setIcon,提示路径找不到
  • 操作系统2.4
  • 虚拟环境下Python调用C++开发的dll如何联调?一文解答!(Python开发环境PyCharm,C++开发环境Visual Studio)
  • Python JSON的深度解析:从基础到应用
  • 【用deepseek实现快递查询】快递物流查询-快递查询-快递查询-快递物流查询-快递物流轨迹查询-快递物流查询接口-快递查询-快递物流查询
  • Flask实现高效日志记录模块
  • DeepSeek与ChatGPT:AI语言模型的全面技术解析与对比
  • linux进程间通信的posix消息队列应用记录
  • Go日期时间处理工具Carbon
  • python 如何获取文件的keys
  • 【C语言】C语言 哈夫曼编码传输(源码+数据文件)【独一无二】
  • 2025年人工智能与教育系统国际学术会议(ICAIES 2025)
  • postgres源码学习之简单sql查询
  • 小耳朵等来了春天:公益义诊筛查专家走进安徽安庆
  • 网约车座椅靠背张贴“差评者得癌症”,如祺出行:未收到投诉无法处理
  • 袁思达已任中国科学院办公厅主任
  • 第78届戛纳电影节开幕,罗伯特·德尼罗领取终身成就奖
  • 远如《月球背面》,近似你我内心
  • 夜读丨取稿费的乐趣