1.3.3.2 结构化的数据类型
名称 | 类型 |
---|---|
sensor_code | (4个字母的字符) |
position | (浮点) |
value | (浮点) |
In [194]:
samples = np.zeros((6,), dtype=[('sensor_code', 'S4'),('position', float), ('value', float)])
samples.ndim
Out[194]:
1
In [195]:
samples.shape
Out[195]:
(6,)
In [196]:
samples.dtype.names
Out[196]:
('sensor_code', 'position', 'value')
In [198]:
samples[:] = [('ALFA', 1, 0.37), ('BETA', 1, 0.11), ('TAU', 1, 0.13),('ALFA', 1.5, 0.37), ('ALFA', 3, 0.11),
('TAU', 1.2, 0.13)]
samples
Out[198]:
array([('ALFA', 1.0, 0.37), ('BETA', 1.0, 0.11), ('TAU', 1.0, 0.13),
('ALFA', 1.5, 0.37), ('ALFA', 3.0, 0.11), ('TAU', 1.2, 0.13)],
dtype=[('sensor_code', 'S4'), ('position', '<f8'), ('value', '<f8')])
用字段名称索引也可以访问字段:
In [199]:
samples['sensor_code']
Out[199]:
array(['ALFA', 'BETA', 'TAU', 'ALFA', 'ALFA', 'TAU'],
dtype='|S4')
In [200]:
samples['value']
Out[200]:
array([ 0.37, 0.11, 0.13, 0.37, 0.11, 0.13])
In [201]:
samples[0]
Out[201]:
('ALFA', 1.0, 0.37)
In [202]:
samples[0]['sensor_code'] = 'TAU'
samples[0]
Out[202]:
('TAU', 1.0, 0.37)
一次多个字段:
In [203]:
samples[['position', 'value']]
Out[203]:
array([(1.0, 0.37), (1.0, 0.11), (1.0, 0.13), (1.5, 0.37), (3.0, 0.11),
(1.2, 0.13)],
dtype=[('position', '<f8'), ('value', '<f8')])
和普通情况一样,象征索引也有效:
In [204]:
samples[samples['sensor_code'] == 'ALFA']
Out[204]:
array([('ALFA', 1.5, 0.37), ('ALFA', 3.0, 0.11)],
dtype=[('sensor_code', 'S4'), ('position', '<f8'), ('value', '<f8')])