代码来自于《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 |