numpy 學習彙總10-dtype資料型別 ( 基礎學習 tcy)
阿新 • • 發佈:2018-11-23
numpy.dtype 建立:2018/6/21 修改:2018/11/20 =================================================================== 1.class numpy.dtype(obj,[align = False,copy = False])#建立一個數據型別 引數: obj:#要轉換為資料型別的物件。 align:bool,#將填充新增到欄位以匹配C編譯器為類似C結構輸出的內容。 copy:布林,#True製作資料型別物件新副本。False只是對內建資料型別物件引用。 =================================================================== 屬性:參考備註1 方法: newbyteorder([new_order='S'])#用不同的位元組順序返回一個新的dtype。還在資料型別的所有欄位和子陣列中進行更改。 # 引數new_order:str忽略大小寫,可選 變換的位元組順序; # # 可以是以下任何一種: # 'S' - 將dtype從當前轉換為相反 本機改相反 # {'<','L'} - 小端 忽略 # {'>','B'} - 大端 # {'=','N'} - 本地訂單 # {'|','I'} - 忽略(不改變位元組順序) # # 返回:new_dtype:dtype # 例項1: sys.byteorder # 'little' dt.newbyteorder('S') #dtype('<i4') dt.newbyteorder('B') #dtype('>i4')
# 呼叫dtype的mro方桂即可檢視其所有的父類:
np.float64.mro()
#[numpy.float64,numpy.floating,numpy.inexact,numpy.number,numpy.generic,float,object]
=================================================================== # 例項2: dt=np.dtype(np.int32)#標量 dt1=np.dtype('str,int,float') #字串建立 dt2= np.dtype(np.str_,np.int32,np.float64) #逗號分隔 dt3=np.dtype([ ('name','U10'),('age','i'), ('weight','f')] ) #list建立 dt4=np.dtype({'names':['name','age','weight'],'formats':['S10',np.int32,'f4']})#字典建立 dt #dtype('int32') dt1 #dtype([('f0', '<U'), ('f1', '<i4'), ('f2', '<f8')]) dt2 #dtype('<U') dt3 #dtype([('name', '<U10'), ('age', '<i4'), ('weight', '<f4')]) dt4 #dtype([('name', 'S10'), ('age', '<i4'), ('weight', '<f4')]) a=np.array([('Tom', 21, 50),('John', 18, 75)], dtype=dt4) # array([('Tom', 21, 50.), ('John', 18, 75.)],dtype=[('name', '<U10'), ('age', '<i4'), ('weight', '<f4')]) ================================================================== # 例項3: b=np.dtype([('hello',int,(2,3,4)),('world',np.void,10)])#void靈活型別,大小為10 # dtype([('hello', '<i4', (2, 3, 4)), ('world', 'V10')]) c=np.dtype('i4,(2,3)f8')# dtype([('f0', '<i4'), ('f1', '<f8', (2, 3))]) np.array([1,2],dtype=c) # array([(1, [[1., 1., 1.], [1., 1., 1.]]),(2, [[2., 2., 2.], [2., 2., 2.]])],dtype=[('f0', '<i4'), ('f1', '<f8', (2, 3))]) # 例項4:將int16細分為2個int8,稱為x和y。 0和1是以位元組為單位的偏移量: np.dtype((np.int16,{'x':( np.int8,0),'y':( np.int8,1)}))#dtype((''i2',[('x','| i1'),('y','| i1')])) # 例項5:以位元組為單位的偏移量,這裡是0和25: np.dtype({'surname':('S25',0),'age':( np.uint8,25)})#dtype([('surname', 'S25'), ('age', 'u1')]) ===================================================================
備註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')])
b.base#dtype('int32')
s.base#dtype([('name', 'S20'), ('age', '<i4'), ('marks', '<f4')])
b.byteorder#'='
s.byteorder#'|'
b.char#'l'
s.char#'V'
b.descr#[('', '<i4')]
b.descr#[('name', '|S20'), ('age', '<i4'), ('marks', '<f4')]
b.fields#
s.fields#mappingproxy({'name': (dtype('S20'), 0), 'age': (dtype('int32'), 20), 'marks': (dtype('float32'), 24)})
b.flags#0
s.flags#16
b.hasobject#False
s.hasobject#False
b.isalignedstruct#False
b.isalignedstruct#False
b.isbuiltin#1
b.isbuiltin#0
b.isnative#True
b.isnative#True
b.itemsize#4
s.itemsize#28
b.kind#'i'
s.kind#'V'
b.name#'int32'
s.name#'void224'
b.names#
s.names#('name', 'age', 'marks')
b.ndim#0
s.ndim#0
b.num#7
s.num#20
b.shape#()
s.shape#()
b.str#'<i4'
s.str#'|V28'
b.type#<class 'numpy.int32'>
s.type#<class 'numpy.void'>
b.subdtype#
s.subdtype#
===============================================================================
備註2:屬性列表
型別 | 型別程式碼 | 說明 | 備註 |
base | 基礎 | dtype('int32') | |
byteorder | 指示此資料型別物件的位元組順序的字元 | '=' | |
char | 21種不同內建型別中的每一種的唯一字元程式碼 | 'l' | |
descr | PEP3118介面描述了資料型別。 | [('', '<i4')] | |
fields | 此資料型別定義命名欄位字典或無。 | mappingproxy(, | |
{'name': (dtype('S20'), 0) | |||
flags | 描述這種資料型別如何解釋的位標誌 | 0 | |
hasobject | bool,指示此dtype是否包含任何欄位或子dtype中的引用計數物件 | FALSE | |
isalignedstruct | 布林值,指示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 |