需求
除了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)