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

代码来自于《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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

之芫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值