NumPy數(shù)據(jù)類型對象(dtype)的構(gòu)造方式
一、數(shù)據(jù)類型對象
numpy.dtype 類的實例用來描述數(shù)組項的組成形式。包括內(nèi)存塊字節(jié)數(shù)、數(shù)據(jù)類型等等。
- 在 NumPy 中描述標(biāo)量數(shù)據(jù)的類型,有整數(shù)、浮點數(shù)等不同精度的幾個內(nèi)置標(biāo)量類型。這些標(biāo)量類型不是 dtype 類的實例,但是在需要使用 dtype 對象的地方,也可以使用這些標(biāo)量。
- 結(jié)構(gòu)化數(shù)據(jù)類型則是通過創(chuàng)建字段(包含其它數(shù)據(jù)類型的數(shù)據(jù)類型)類形成。每個字段都有一個名稱,可以用來訪問該字段。
數(shù)據(jù)類型對象描述了以下幾個方面:
- 數(shù)據(jù)的類型(整型、浮點型、Python對象等);
- 數(shù)據(jù)的大?。ǘ嗌賯€字節(jié));
- 數(shù)據(jù)的順序(little-endian or big-endian);
- 如果數(shù)據(jù)類型是子數(shù)組,它的形狀和數(shù)據(jù)類型是什么;
- 如果數(shù)據(jù)類型對象是結(jié)構(gòu)化數(shù)據(jù)類型,則是其它數(shù)據(jù)類型的集合;集合的每個元素包括(字段名稱、字段數(shù)據(jù)類型,每個字段占用內(nèi)存塊的哪個部分);
二、numpy.dtype 類
1.numpy.dtype(dtype, align=False, copy=False)類
用于創(chuàng)建一個數(shù)據(jù)類型對象。NumPy 數(shù)組的元素是由dtype描述的。
數(shù)據(jù)類型對象可以由基本數(shù)字類型的不同組合構(gòu)成。
2. 類的參數(shù)
- dtype: 要轉(zhuǎn)換為的數(shù)據(jù)類型對象;
- align:bool, optional,如果為 true,填充字段使其類似 C 的結(jié)構(gòu)體;
- copy:bool,optional,復(fù)制 dtype 對象 ,如果為 false,則是對內(nèi)置數(shù)據(jù)類型對象的引用;
3. 類的屬性
- alignment:根據(jù)編譯器此數(shù)據(jù)類型所需的對齊(字節(jié));
- base:返回基本元素的數(shù)據(jù)類型;
- byteorder:指定此數(shù)據(jù)類型對象字節(jié)順序的字符,<小端,>大端,|不適;
- char:21種不同內(nèi)置類型中的每一種的唯一字符代碼;
- descr:PEP3118接口描述了數(shù)據(jù)類型;
- fields:此數(shù)據(jù)類型定義命名字段字典;
- itemsize:此數(shù)據(jù)類型對象的元素大??;
- kind:此數(shù)據(jù)類型的字符代碼;
- name:數(shù)據(jù)類型名稱;
- name:字段名稱組成的元組;
- str:此數(shù)據(jù)類型對象的數(shù)組協(xié)議類型字符串;
三、dtype數(shù)據(jù)類型對象構(gòu)造
每當(dāng)在 NumPy 函數(shù)或方法中需要數(shù)據(jù)類型時,需要提供 dtype 對象或可以轉(zhuǎn)換為 dtype 的對象。
數(shù)據(jù)類型對象的轉(zhuǎn)換由dtype構(gòu)造函數(shù)完成,可以轉(zhuǎn)換為數(shù)據(jù)類型對象的內(nèi)容有:
1. dtype 對象
按原樣使用.
2. None
使用默認(rèn)的數(shù)據(jù)類型 float_.
3. Array-scalar 類型:
24鐘內(nèi)置數(shù)組標(biāo)量類型對象,都轉(zhuǎn)換為關(guān)聯(lián)的 dtype 對象;
示例:
# 包含 32 位 big-endia 整數(shù)的簡單的數(shù)據(jù)類型。
>>>dt = np.dtype(np.int32)
>dtype('int32')
>>>dt = np.dtype(np.complex128)
>dtype('complex128')
4. 泛型類型
泛型分層類型對象根據(jù)關(guān)聯(lián)轉(zhuǎn)換為相應(yīng)的類型對象:

| 類型 | 類型 |
|---|---|
| number, inexact, floating | float |
| complexfloating | cfloat |
| integer, signedinteger | int_ |
| unsignedinteger | uint |
| character | string |
| generic, flexible | void |
5. 內(nèi)置Python類型
Python內(nèi)置類型在用于生成dtype對象時,等效于對應(yīng)的數(shù)組標(biāo)量類型:
| 類型 | 類型 |
|---|---|
| int | int_ |
| bool | bool_ |
| float | float_ |
| complex | cfloat |
| bytes | bytes_ |
| str | unicode_ |
| unicode | unicode_ |
| buffer | void |
| all others | object_ |
示例:
# 內(nèi)置數(shù)據(jù)類型轉(zhuǎn)換。
>>>dt = np.dtype(float)
>dtype('float64')
>>>dt = np.dtype(int)
>dtype('int32')
6. 帶有.dtype的類型
具有 dtype 屬性的任何類型對象:將直接訪問和使用該屬性。
該屬性必須返回可轉(zhuǎn)換為dtype對象的內(nèi)容。
7.單字符串(One-character strings)
每個內(nèi)置數(shù)據(jù)類型都有一個字符代碼,用于唯一的標(biāo)識,參考《NumPy中的24種不同類型的標(biāo)量》。
示例:
# 使用字符代碼定義數(shù)據(jù)類型對象。
>>>dt = np.dtype('?')
>dtype('bool')
>
>>>dt = np.dtype('>H')
>dtype('>u2')
8. Array-protocol類型字符串
格式說明:第一個字符用于指定數(shù)據(jù)的類型,后面的字符用于指定每個項目的字節(jié)數(shù),如果第一個字符指定的是Unicode,則后面的字符標(biāo)識字符數(shù)。
字符代碼與指代的類型:
| 代碼 | 類型 |
|---|---|
| ‘?’ | boolean |
| ‘b’ | signed byte |
| ‘B’ | unsigned byte |
| i | signed intege |
| ‘u’ | unsigned integer |
| ‘f’ | floating-point |
| ‘c’ | complex-floating point |
| ‘m’ | timedelta |
| ‘M’ | datetime |
| ‘O’ | Python objects |
| ‘S’, ‘a’ | zero-terminated bytes |
| ‘U’ | Unicode string |
| ‘V’ | raw data (void) |
示例:
>>>dt = np.dtype('i4')
>dtype('int32')
>
>>>dt = np.dtype('c16')
>dtype('complex128')
>>>dt = np.dtype('a25')
>dtype('S25')
9. 帶有逗號分隔字段的字符串
用于指定格式化數(shù)據(jù)類型的簡寫表示法,生成的數(shù)據(jù)類型的字段命名為 ‘f0’、‘f1’、···、‘fN’ 。
示例:
# 如果字段的形狀需要多個維度,則需要寫在數(shù)據(jù)類型前并在形狀上加括號。
>>>dt = np.dtype("a3, 3u8, (2,4)U10")
>dtype([('f0', 'S3'), ('f1', '<u8', (3,)), ('f2', '<U10', (2, 4))])
10. 類型字符串
可以使用 numpy.sctypeDict.keys() 中包含的任何字符串來生成數(shù)據(jù)類型對象。
示例:
>>>dt = np.dtype("uint32")
>dtype('uint')
11. 使用(flexible_dtype, itemsize)格式設(shè)定靈活數(shù)據(jù)類型
(flexible_dtype, itemsize)
- flexible_dtype:靈活數(shù)據(jù)類型對象;
- itemsize:所需項大小的整數(shù)
示例:
>>>dt = np.dtype("uint32")
>dtype('V10')
>>>dt = np.dtype(('U', 10))
>dtype('<U10')
12. 使用(fixed_dtype, shape)格式為固定大小的數(shù)據(jù)類型設(shè)定形狀
(fixed_dtype, shape)
- fixed_dtype:固定大小的數(shù)據(jù)類型;
- shape:為整數(shù),表示對應(yīng)大小的一維數(shù)組;為元組,表示對應(yīng)形狀的子數(shù)組;
示例:
>>>dt = np.dtype(('i8', 3))
>dtype(('<i8', (3,)))
>>>dt = np.dtype(('i4, (2,3)f8, f4', (2,3)))
>dtype(([('f0', '<i4'), ('f1', '<f8', (2, 3)), ('f2', '<f4')], (2, 3)))
13. 使用[(field_name, field_dtype, field_shape), ...]格式
[(field_name, field_dtype, field_shape), ...]
- field_name:字段名稱;
- field_dtype:數(shù)據(jù)類型;
- field_shape:數(shù)組形狀;
示例:
>>>dt = np.dtype([('big', '>i4'), ('little', '<i4')])
>dtype([('big', '>i4'), ('little', '<i4')])
14. 使用{'names': ..., 'formats': ..., 'offsets': ..., 'titles': ..., 'itemsize': ...}格式
{'names': ..., 'formats': ..., 'offsets': ..., 'titles': ..., 'itemsize': ...}- names:必選,字段名稱列表;
- formats:必選,數(shù)據(jù)類型列表,必須與字段名稱列表等長;
- offsets:可選,每個字段的字節(jié)偏移量的列表
- titles:可選,標(biāo)題列表;
- itemsize:可選,設(shè)置dtype的總大?。?/li>
示例:
>>>dt = np.dtype({'names': ['r','b'], 'formats': ['u1', 'u1'],
'offsets': [0, 2],
'titles': ['Red pixel', 'Blue pixel']})
>dtype({'names':['r','b'], 'formats':['u1','u1'], 'offsets':[0,2], 'titles':['Red pixel','Blue pixel'], 'itemsize':3})
15. 使用{'field1': ..., 'field2': ..., ...}格式
{'field1': ..., 'field2': ..., ...}示例:
>>>dt = np.dtype({'col1': ('U10', 0), 'col2': (np.float32, 10),
'col3': (int, 14)})
>dtype({'names':['col1','col2','col3'], 'formats':['<U10','<f4','<i4'], 'offsets':[0,10,14], 'itemsize':40})
16. 使用(base_dtype, new_dtype)格式
這種方法是將 base_dtype 解釋為結(jié)構(gòu)化的dtype。
示例:
# 將32位整數(shù)解釋位兩個16位整數(shù)
>>>dt = np.dtype((np.int32,{'real':(np.int16, 0),'imag':(np.int16, 2)}))
>dtype((numpy.int32, [('real', '<i2'), ('imag', '<i2')]))
# 將32位整數(shù)解釋為包含8位整數(shù)的子數(shù)組
>>>dt = np.dtype((np.int32, (np.int8, 4)))
>dtype('int32')
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python數(shù)據(jù)分析從入門到進階之分類算法全面教程
數(shù)據(jù)分析是處理和解釋數(shù)據(jù)以發(fā)現(xiàn)有用信息和洞察的過程,其中,分類算法是數(shù)據(jù)分析領(lǐng)域的一個重要組成部分,它用于將數(shù)據(jù)分為不同的類別或組,本文將介紹分類算法的基本概念和進階技巧,以及如何在Python中應(yīng)用這些算法,包括示例代碼和實際案例2023-11-11
python編程scrapy簡單代碼實現(xiàn)搜狗圖片下載器
這篇文章主要為大家介紹了使用python scrapy簡單代碼實現(xiàn)搜狗圖片下載器示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-11-11
將labelme格式數(shù)據(jù)轉(zhuǎn)化為標(biāo)準(zhǔn)的coco數(shù)據(jù)集格式方式
今天小編就為大家分享一篇將labelme格式數(shù)據(jù)轉(zhuǎn)化為標(biāo)準(zhǔn)的coco數(shù)據(jù)集格式方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
python使用matplotlib畫出的圖怎樣放到word中
這篇文章主要介紹了python使用matplotlib畫出的圖怎樣放到word中問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09
Python對時間序列進行數(shù)據(jù)分析與可視化的實戰(zhàn)指南
掌握時間序列分析技術(shù),能幫助我們從數(shù)據(jù)中挖掘出隱藏的趨勢,周期和異常,本文將以股票價格數(shù)據(jù)為例,通過Python實現(xiàn)從數(shù)據(jù)加載到可視化分析的全流程,有需要的可以了解下2025-11-11
使用Python+Flask開發(fā)博客項目并實現(xiàn)內(nèi)網(wǎng)穿透
Flask是一個使用python編寫的輕量級Web框架,這篇文章我們將使用這個框架編寫一個屬于自己的博客網(wǎng)站!并教你如何通過使用內(nèi)網(wǎng)穿透工具處理項目,讓本地的項目可以在公網(wǎng)訪問,感興趣的可以了解一下2021-11-11
Python實現(xiàn)動態(tài)循環(huán)輸出文字功能
這篇文章主要介紹了Python實現(xiàn)動態(tài)循環(huán)輸出文字功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-05-05

