1. 程式人生 > >numpy:自定義資料型別dtype

numpy:自定義資料型別dtype

需求

除了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'      #可以看出這兩種索引方式是等價的
 NumPy 用字元編碼來表示資料型別。如下表:
資料型別 字元編碼
整數 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)