NumPy入门(5)_结构化数组

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Magic_Ninja/article/details/85788134

代码来自于《Python数据科学手册》的代码复现。
来自和鲸科技(科赛)的K-lab项目

常规操作

name = ['Alice', 'Bob', 'Cathy', 'Doug']
age = [25, 45, 37, 19]
weight = [55.0, 85.5, 68.0, 61.5]
x = np.zeros(4, dtype=int)

使用复合数据结构的结构化数组

data = np.zeros(4, dtype={'names' : ('name', 'age', 'weight'), 'formats' : ('U10', 'i4', 'f8')})
print(data.dtype)
[('name', '<U10'), ('age', '<i4'), ('weight', '<f8')]

U10表示“长度不超过10的Unicode字符串”, i4表示“4字节(32比特)整型”, f8表示“8字节(64比特)浮点型”

将列表数组放入数组中:

data['name'] = name
data['age'] = age
data['weight'] = weight
print(data)
[('Alice', 25, 55. ) ('Bob', 45, 85.5) ('Cathy', 37, 68. )
 ('Doug', 19, 61.5)]

获取所有名字

data['name']
array(['Alice', 'Bob', 'Cathy', 'Doug'], dtype='<U10')

获取数据的第一行

data[0]
('Alice', 25, 55.)

获取最后一行的名字

data[-1]['name']
'Doug'

获取年龄小于30岁的人的名字

data[data['age'] < 30]['name']
array(['Alice', 'Doug'], dtype='<U10')

生成结构化数组

np.dtype({'names' : ('name', 'age', 'weight'), 'formats' : ('U10', 'i4', 'f8')})
dtype([('name', '<U10'), ('age', '<i4'), ('weight', '<f8')])

数值类型可以用Python类型或NumPy的dtype类型指定:

np.dtype({'names' : ('name', 'age', 'weight'), 'formats' : ((np.str_, 10), int, np.float32)})
dtype([('name', '<U10'), ('age', '<i8'), ('weight', '<f4')])

复合类型也可以是元组列表:

np.dtype([('name', 'S10'), ('age', 'i4'), ('weight', 'f8')])
dtype([('name', 'S10'), ('age', '<i4'), ('weight', '<f8')])
np.dtype('S10, i4, f8')
dtype([('f0', 'S10'), ('f1', '<i4'), ('f2', '<f8')])

Numpy的数据类型

NumPy数据类型符号 描述 示例
‘b’ 字节型 np.dtype(‘b’)
‘i’ 有符号整型 np.dtype(‘i4’) == np.int32
‘u’ 无符号整型 np.dtype(‘u1’) == np.uint8
‘f’ 浮点型 np.dtype(‘f8’) == np.int64
‘c’ 复数浮点型 np.dtype(‘c16’) == np.complex128
‘S’、 ‘a’ 字符串 np.dtype(‘S5’)
‘U’ Unicode编码字符串 np.dtype(‘U’) == np.str_
‘V’ 原生数据,raw data (空,void) np.dtype(‘V’) == np.void

猜你喜欢

转载自blog.csdn.net/Magic_Ninja/article/details/85788134