Python?NumPy教程之?dāng)?shù)據(jù)類(lèi)型對(duì)象詳解
每個(gè) ndarray 都有一個(gè)關(guān)聯(lián)的數(shù)據(jù)類(lèi)型 (dtype) 對(duì)象。這個(gè)數(shù)據(jù)類(lèi)型對(duì)象(dtype)告訴我們數(shù)組的布局。這意味著它為我們提供了以下信息:
- 數(shù)據(jù)類(lèi)型(整數(shù)、浮點(diǎn)數(shù)、Python 對(duì)象等)
- 數(shù)據(jù)大?。ㄗ止?jié)數(shù))
- 數(shù)據(jù)的字節(jié)順序(小端或大端)
- 如果數(shù)據(jù)類(lèi)型是子數(shù)組,它的形狀和數(shù)據(jù)類(lèi)型是什么。
ndarray 的值存儲(chǔ)在緩沖區(qū)中,可以將其視為連續(xù)的內(nèi)存字節(jié)塊。所以這些字節(jié)將如何被解釋由dtype對(duì)象給出。
構(gòu)造數(shù)據(jù)類(lèi)型(dtype)對(duì)象
數(shù)據(jù)類(lèi)型對(duì)象是 numpy.dtype 類(lèi)的一個(gè)實(shí)例,可以使用numpy.dtype
.
參數(shù):
obj: 要轉(zhuǎn)換為數(shù)據(jù)類(lèi)型對(duì)象的對(duì)象。
align : [bool, optional] 向字段添加填充以匹配 C 編譯器為類(lèi)似 C 結(jié)構(gòu)輸出的內(nèi)容。
copy : [bool, optional] 制作數(shù)據(jù)類(lèi)型對(duì)象的新副本。如果為 False,則結(jié)果可能只是對(duì)內(nèi)置數(shù)據(jù)類(lèi)型對(duì)象的引用。
# Python 程序創(chuàng)建數(shù)據(jù)類(lèi)型對(duì)象 import numpy as np # np.int16 被轉(zhuǎn)換為數(shù)據(jù)類(lèi)型對(duì)象。 print(np.dtype(np.int16))
輸出:
int16
# Python 程序創(chuàng)建一個(gè)包含 32 位大端整數(shù)的數(shù)據(jù)類(lèi)型對(duì)象 import numpy as np # i4 表示大小為 4 字節(jié)的整數(shù) # > 表示大端字節(jié)序和 # < 表示小端編碼。 # dt 是一個(gè) dtype 對(duì)象 dt = np.dtype('>i4') print("Byte order is:",dt.byteorder) print("Size is:", dt.itemsize) print("Data type is:", dt.name)
輸出:
Byte order is: >
Size is: 4
Name of data type is: int32
類(lèi)型說(shuō)明符(在上述情況下為 i4)可以采用不同的形式:
b1、i1、i2、i4、i8、u1、u2、u4、u8、f2、f4、f8、c8、c16、a(表示字節(jié)、整數(shù)、無(wú)符號(hào)整數(shù)、浮點(diǎn)數(shù)、指定字節(jié)長(zhǎng)度的復(fù)數(shù)和定長(zhǎng)字符串)
int8,...,uint8,...,float16, float32, float64, complex64, complex128(這次是位大?。?/p>
注意: dtype 與 type 不同。
# 用于區(qū)分類(lèi)型和數(shù)據(jù)類(lèi)型的 Python 程序。 import numpy as np a = np.array([1]) print("type is: ",type(a)) print("dtype is: ",a.dtype)
輸出:
type is:
dtype is: int32
具有結(jié)構(gòu)化數(shù)組的數(shù)據(jù)類(lèi)型對(duì)象
數(shù)據(jù)類(lèi)型對(duì)象對(duì)于創(chuàng)建結(jié)構(gòu)化數(shù)組很有用。結(jié)構(gòu)化數(shù)組是包含不同類(lèi)型數(shù)據(jù)的數(shù)組??梢越柚侄卧L(fǎng)問(wèn)結(jié)構(gòu)化數(shù)組。
字段就像為對(duì)象指定名稱(chēng)。在結(jié)構(gòu)化數(shù)組的情況下,dtype 對(duì)象也將是結(jié)構(gòu)化的。
# 用于演示字段使用的 Python 程序 import numpy as np # 一種結(jié)構(gòu)化數(shù)據(jù)類(lèi)型,包含一個(gè) 16 字符的字符串(在“name”字段中)和兩個(gè) 64 位浮點(diǎn)數(shù)的子數(shù)組(在“grades”字段中) dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))]) # 具有字段等級(jí)的對(duì)象的數(shù)據(jù)類(lèi)型 print(dt['grades']) # 具有字段名稱(chēng)的對(duì)象的數(shù)據(jù)類(lèi)型 print(dt['name'])
輸出:
('<f8', (2,))
# Python 程序演示了數(shù)據(jù)類(lèi)型對(duì)象與結(jié)構(gòu)化數(shù)組的使用。 import numpy as np dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))]) # x 是一個(gè)包含學(xué)生姓名和分?jǐn)?shù)的結(jié)構(gòu)化數(shù)組。 # 學(xué)生姓名的數(shù)據(jù)類(lèi)型是np.unicode_,分?jǐn)?shù)的數(shù)據(jù)類(lèi)型是np.float(64) x = np.array([('Sarah', (8.0, 7.0)), ('John', (6.0, 7.0))], dtype=dt) print(x[1]) print("Grades of John are: ", x[1]['grades']) print("Names are: ", x['name'])
輸出:
('John', [ 6., 7.])
Grades of John are: [ 6. 7.]
Names are: ['Sarah' 'John']
到此這篇關(guān)于Python NumPy教程之?dāng)?shù)據(jù)類(lèi)型對(duì)象詳解的文章就介紹到這了,更多相關(guān)Python NumPy數(shù)據(jù)類(lèi)型對(duì)象內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)的文軒網(wǎng)爬蟲(chóng)完整示例
這篇文章主要介紹了Python實(shí)現(xiàn)的文軒網(wǎng)爬蟲(chóng),結(jié)合完整實(shí)例形式分析了Python爬蟲(chóng)爬取文軒網(wǎng)圖書(shū)信息的相關(guān)操作技巧,需要的朋友可以參考下2019-05-05python multiprocessing 多進(jìn)程并行計(jì)算的操作
這篇文章主要介紹了python multiprocessing 多進(jìn)程并行計(jì)算的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03基于python調(diào)用psutil模塊過(guò)程解析
這篇文章主要介紹了基于python調(diào)用psutils模塊過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12OpenCV視頻流Python多線(xiàn)程處理方法詳細(xì)分析
為OpenCV是搞計(jì)算機(jī)視覺(jué)必須要掌握的基礎(chǔ),這篇文章主要給大家介紹了關(guān)于OpenCV視頻流多線(xiàn)程處理的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11