青岛机关建设网站陕西省建设网官方
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)
运行结果: