2.NumPy 数组对象

360影视 国产动漫 2025-03-14 18:42 3

摘要:返回值表示这是一个包含5个元素的向量,取值分别为0~4的整数。数组的shape属性返回一个元组(tuple),元组中的元素即为NumPy数组每一个维度上的大小。

实际的数据;描述这些数据的元数据。

NumPy数组中的所有元素类型必须是一致的。

与Python中一样,NumPy数组的下标也是从0开始的。

# 用arange函数创建数组,并获取其数据类型:import numpy as npa = np.arange(5)a.dtypedtype('int32')# 获取数组的维度a.shape(5,)

返回值表示这是一个包含5个元素的向量,取值分别为0~4的整数。数组的shape属性返回一个元组(tuple),元组中的元素即为NumPy数组每一个维度上的大小。

m = np.array([np.arange(5), np.arange(5)])marray([[0, 1, 2, 3, 4],[0, 1, 2, 3, 4]])# 获取数组维度m.shape# 创建一个二维数值a = np.array([[1,2,3],[4,5,6]])# 获取数组元素a[0,2]3a[1,1]5

数组的下标是从0开始的。

Python支持的数据类型有整型、浮点型以及复数型,但这些类型不足以满足科学计算的需求,因此NumPy添加了很多其他的数据类型。在实际应用中,我们需要不同精度的数据类型,它们占用的内存空间也是不同的。在NumPy中,大部分数据类型名是以数字结尾的,这个数字表示其在内存中占用的位数。

NumPy支持的数据类型:

bool 用一位存储的布尔类型(值为TRUE或FALSE)inti 由所在平台决定其精度的整数(一般为int32或int64)int8 整数,范围为128至127int16 整数,范围为32768至32767int32 整数,范围为2^31至2^31-1int64 整数,范围为2^63至2^63-1uint8 无符号整数,范围为0至255uint16 无符号整数,范围为0至65535uint32 无符号整数,范围为0至2^32-1uint64 无符号整数,范围为0至2^64-1float16 半精度浮点数(16位):其中用1位表示正负号,5位表示指数,10位表示尾数float32 单精度浮点数(32位):其中用1位表示正负号,8位表示指数,23位表示尾数float64或float 双精度浮点数(64位):其中用1位表示正负号,11位表示指数,52位表示尾数complex64 复数,分别用两个32位浮点数表示实部和虚部complex128或complex 复数,分别用两个64位浮点数表示实部和虚部

每一种数据类型均有对应的类型转换函数, 如:

np.float32(58)58.0np.int8(58.598)58np.float32(True)1.0np.float64(False)0.0bool(58)Truebool(0)False

在NumPy中,许多函数的参数中可以指定数据类型,通常这个参数是可选的:

np.arange(7, dtype=np.uint16)array([0, 1, 2, 3, 4, 5, 6], dtype=uint16)m = np.array([[1,2,3],[4,5,6]], dtype=np.float64)marray([[1., 2., 3.],[4., 5., 6.]])m.dtypedtype('float64')

数据类型对象是numpy.dtype类的实例。NumPy数组中的每一个元素均为相同的数据类型。数据类型对象可以给出单个数组元素在内存中占用的字节数,即dtype类的itemsize属性:

m.dtype.itemsize8

NumPy可以使用字符编码来表示数据类型,应该优先使用dtype对象来表示数据类型,而不是这些字符编码。

整数 i无符号整数 u单精度浮点数 f双精度浮点数 d布尔值 b复数 D字符串 Sunicode字符串 Uvoid (空) Vnp.arange(10, dtype='f')array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.], dtype=float32)np.arange(7, dtype='D')array([0.+0.j, 1.+0.j, 2.+0.j, 3.+0.j, 4.+0.j, 5.+0.j, 6.+0.j])np.dtype('f8')dtype('float64')

完整的NumPy数据类型列表可以在sctypeDict.keys中找到:

np.sctypeDict.keysdict_keys(['?', 0, 'byte', 'b', 1, 'ubyte', 'B', 2, 'short', 'h', 3, 'ushort', 'H', 4, 'i', 5, 'uint', 'I', 6, 'intp', 'p', 9, 'uintp', 'P', 10, 'long', 'l', 7, 'ulong', 'L', 8, 'longlong', 'q', 'ulonglong', 'Q', 'half', 'e', 23, 'f', 11, 'double', 'd', 12, 'longdouble', 'g', 13, 'cfloat', 'F', 14, 'cdouble', 'D', 15, 'clongdouble', 'G', 16, 'O', 17, 'S', 18, 'unicode', 'U', 19, 'void', 'V', 20, 'M', 21, 'm', 22, 'b1', 'bool8', 'i8', 'int64', 'u8', 'uint64', 'f2', 'float16', 'f4', 'float32', 'f8', 'float64', 'c8', 'complex64', 'c16', 'complex128', 'object0', 'bytes0', 'str0', 'void0', 'M8', 'datetime64', 'm8', 'timedelta64', 'int32', 'i4', 'uint32', 'u4', 'int16', 'i2', 'uint16', 'u2', 'int8', 'i1', 'uint8', 'u1', 'complex_', 'single', 'csingle', 'singlecomplex', 'float_', 'intc', 'uintc', 'int_', 'longfloat', 'clongfloat', 'longcomplex', 'bool_', 'bytes_', 'string_', 'str_', 'unicode_', 'object_', 'int', 'float', 'complex', 'bool', 'object', 'str', 'bytes', 'a', 'int0', 'uint0'])

获取数据类型的字符编码:

t = np.dtype(np.float32)t.char'f'

获取数据类型:

t.typenumpy.float32

获取数据类型的字符串表示:

t.str'

在数据类型的字符串表示中,字符串的首个字符表示字节序(endianness),后面如果还有字符的话,将是一个字符编码,接着一个数字表示每个数组元素存储所需的字节数。 这里,字节序是指位长为32或64的字(word)存储的顺序,包括大端序(big-endian)和小端序(little-endian)。大端序是将最高位字节存储在最低的内存地址处,用>表示;与之相反,小端序是将最低位字节存储在最低的内存地址处。

自定义数据类型是一种异构数据类型,可以当做用来记录电子表格或数据库中一行数据的结构。

例如:创建一个表示学生信息的数据类型,用一个长度为32个字符的字符串来记录姓名,用一个长度为1个字符的字符串来记录性别,用一个8位整数来记录年龄,用一个32位单精度浮点数来记录成绩。

t = np.dtype([('name', np.str_, 32), ('sex', np.str_, 1), ('age', np.int8), ('score', np.float32)])# 查看数据了偶像tdtype([('name', '# 查看某字段的数据类型t['name']dtype('t['age']dtype('int8')

在用array函数创建数组时,如果没有在参数中指定数据类型,将默认为浮点数类型。 创建自定义数据类型的数组,就必须在参数中指定数据类型,否则将触发TypeError错误。

# 使用自定义数据类型创建数组student1 = np.array([('刘丽','女',17,675.2),('李乐','男',18,620.3),('王湘','女',18,590)], dtype=t)student1array([('刘丽', '女', 17, 675.2), ('李乐', '男', 18, 620.3),('王湘', '女', 18, 590. )],dtype=[('name', '

来源:IT职业教育

相关推荐