需求
除了numpy中内置的dtype,有时我们需要自定义类型。比如想创建一个类似C中的结构数组,这时就需要自定义dtype了(和matlab中的cell也类似)
实例
In [1]:person=np.dtype({'names':['name','age','hometown'],'formats':['S32','i','S32']})
In [2]:person
In [ ]:p=np.dtype([('name','S32'),('age','i'),('hometown','f')])
In [ ]:p
Out[ ]:dtype([('name', 'S32'), ('age', '<i4'), ('hometown', '<f4')])#等价定义
Out[2]:dtype([('name', 'S32'), ('age', '<i4'), ('hometown', 'S32')])
In [2]:group=np.array([('fusheng',21,'sichuan'),('kaka',35,'brazil'),('libai',1000,'tang')],dtype=person)
In [3]:group[1]
Out[3]: (b'kaka', 35, b'brazil')
In [4]:group[0][0]
Out[4]: b'fusheng'
In [5]group[0]['name']
Out[5]: b'fusheng' #可以看出这两种索引方式是等价的
数据类型 | 字符编码 |
---|---|
整数 | i |
无符号整数 | u |
单精度浮点数 | f |
双精度浮点数 | d |
布尔值 | b |
复数 | D |
字符串 | S |
Unicode | U |
Void | V |
一个利用自定义dtype的例子:
mytype=np.dtype([('i1',np.complex128),('i2',np.complex128)])
U=np.zeros((3,5),dtype=mytype)