1. 程式人生 > >numpy 學習彙總46 - dtype屬性( 初步學習 tcy)

numpy 學習彙總46 - dtype屬性( 初步學習 tcy)

np.dtype attributes屬性                         2018/6/21   2018/12/6

1.例項 

import numpy as np

a=np.arange(24).reshape(2,3,4)
s=np.dtype({'names':['name','age','marks'],'formats':['S20',np.int32,'f4']})

a1=np.array([[('Tom11', 11, 110),('John12', 12, 120),('Mark13', 13, 130)],
[('Tom21', 21, 210),('John22', 22, 220),('Mark23', 23, 230)]], dtype=s)

b=a.dtype #dtype('int32')
s #dtype([('name', 'S20'), ('age', '<i4'), ('marks', '<f4')])  

例項1: 

b.base ,s.base          #dtype('int32') #dtype([('name', 'S20'), ('age', '<i4'), ('marks', '<f4')])
b.flags ,s.flags        #0 #16

b.byteorder,s.byteorder #'=' #'|'

b.type ,s.type #<class 'numpy.int32'> #<class 'numpy.void'>
b.subdtype,s.subdtype   # #

b.char ,s.char          #'l' #'V'
b.descr ,s.descr        #[('', '<i4')] #[('name', '|S20'), ('age', '<i4'), ('marks', '<f4')]
b.fields ,s.fields      # #mappingproxy({'name': (dtype('S20'), 0), 'age': (dtype('int32'), 20), 'marks': (dtype('float32'), 24)})

b.hasobject,s.hasobject #False #False
b.isalignedstruct,s.isalignedstruct#False #False

b.isbuiltin,s.isbuiltin #1 #0
b.isnative,s.isnative   #True #True
b.itemsize ,s.itemsize  #4 #28
b.kind ,s.kind          #'i' #'V'
b.name,s.name           #'int32' #'void224'
b.names ,s.names        # #('name', 'age', 'marks')
b.ndim,s.ndim           #0 #0
b.num,s.num             #7 #20
b.shape,s.shape         #() #()
b.str,s.str             #'<i4' #'|V28'  

例項2:

# 所有內建資料型別物件都具有'='或'|'位元組順序。
dt = np.dtype('i2')
dt.byteorder# '='

# endian端點與8位數無關
np.dtype('i1').byteorder# '|'

# or ASCII strings
np.dtype('S2').byteorder# '|'

# Even if specific code is given, and it is native '=' is the byteorder
import sys
sys_is_le = sys.byteorder == 'little'   # True
native_code = sys_is_le and '<' or '>'  # '<'
swapped_code = sys_is_le and '>' or '<' # '>'
dt = np.dtype(native_code + 'i2')
dt.byteorder                            # '='

# Swapped code shows up as itself
dt = np.dtype(swapped_code + 'i2')
dt.byteorder == swapped_code            # True  
2.一般型別資料的字元程式碼  (one of ‘biufcmMOSUV’)    
b boolean
i signed integer
u unsigned integer
f floating-point
c complex floating-point

m timedelta
M datetime
O object
S (byte-)string
U Unicode
V void  

3.屬性簡表 

型別 說明 備註
alignment 根據編譯器此資料型別所需的對齊(位元組) 1
base 基礎                                                               dtype('int32')
byteorder 資料型別物件位元組順序的字元< 小端;>大端;| 不適用               '='本地
char 21種不同內建型別中的每一種的唯一字元程式碼     'l'
descr PEP3118介面描述了資料型別。                       [('', '<i4')]
fields 此資料型別定義命名欄位字典或無。                mappingproxy(,
 -  - {'name': (dtype('S20'), 0)
flags 描述這種資料型別如何解釋的位標誌                 0
hasobject bool,指示此dtype是否包含任何欄位或子dtype中的引用計數物件 FALSE
isalignedstruct bool指示dtype是否是維護欄位對齊的結構                             FALSE
isbuiltin 整數指示這個dtype與內建dtypes的關係                                      1
isnative 布林值,指示此dtype的位元組順序是否是平臺的本地順序。                 TRUE
Itemsize 此資料型別物件的元素大小                                                            4
kind 資料型別的字元程式碼('biufcmMOSUV')                                          'i'
name 資料型別名稱。                                                                            'int32'
names 欄位名稱列表,如果沒有欄位,則為無。                               ('name', 'age', 'marks')
ndim 則該子陣列的維數,否則為0。                                              0
num 21種不同內建型別中的每一種的唯一編號                             7
shape 則為子陣列的形狀元組,否則為()。                                ()
str 此資料型別物件的陣列協議型別字串。                             '<i4'
type 用於例項化此資料型別的標量的型別物件                             <class 'numpy.int32'>
subdtype 元組(item_dtype,shape)如這個dtype描述一個子陣列則返回None  -