Python NumPy教學之資料型別物件

2022-08-29 14:02:31

【相關推薦:Python3視訊教學

每個 ndarray 都有一個關聯的資料型別 (dtype) 物件。這個資料型別物件(dtype)告訴我們陣列的佈局。這意味著它為我們提供了以下資訊:

  • 資料型別(整數、浮點數、Python 物件等)
  • 資料大小(位元組數)
  • 資料的位元組順序(小端或大端)
  • 如果資料型別是子陣列,它的形狀和資料型別是什麼。

ndarray 的值儲存在緩衝區中,可以將其視為連續的記憶體位元組塊。所以這些位元組將如何被解釋由dtype物件給出。

構造資料型別(dtype)物件

資料型別物件是 numpy.dtype 類的一個範例,可以使用numpy.dtype.

引數:

obj: 要轉換為資料型別物件的物件。

align : [bool, optional] 向欄位新增填充以匹配 C 編譯器為類似 C 結構輸出的內容。

copy : [bool, optional] 製作資料型別物件的新副本。如果為 False,則結果可能只是對內建資料型別物件的參照。

# Python 程式建立資料型別物件
import numpy as np
 
# np.int16 被轉換為資料型別物件。
print(np.dtype(np.int16))

輸出:

int16

# Python 程式建立一個包含 32 位大端整數的資料型別物件
import numpy as np
 
# i4 表示大小為 4 位元組的整數
# > 表示大端位元組序和
# < 表示小端編碼。
# dt 是一個 dtype 物件
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

型別說明符(在上述情況下為 i4)可以採用不同的形式:

b1、i1、i2、i4、i8、u1、u2、u4、u8、f2、f4、f8、c8、c16、a(表示位元組、整數、無符號整數、浮點數、指定位元組長度的複數和定長字串)

int8,...,uint8,...,float16, float32, float64, complex64, complex128(這次是大小)

注意: dtype 與 type 不同。

# 用於區分型別和資料型別的 Python 程式。
import numpy as np
 
a = np.array([1])
 
print("type is: ",type(a))
print("dtype is: ",a.dtype)

輸出:

type is:
dtype is: int32

具有結構化陣列的資料型別物件

資料型別物件對於建立結構化陣列很有用。結構化陣列是包含不同型別資料的陣列。可以藉助欄位存取結構化陣列。

欄位就像為物件指定名稱。在結構化陣列的情況下,dtype 物件也將是結構化的。

# 用於演示欄位使用的 Python 程式
import numpy as np
 
# 一種結構化資料型別,包含一個 16 字元的字串(在「name」欄位中)和兩個 64 位浮點數的子陣列(在「grades」欄位中)
 
dt = np.dtype([('name', np.unicode_, 16),
               ('grades', np.float64, (2,))])
 
# 具有欄位等級的物件的資料型別
print(dt['grades'])
 
# 具有欄位名稱的物件的資料型別
print(dt['name'])

輸出:

('<f8', (2,))

# Python 程式演示了資料型別物件與結構化陣列的使用。
import numpy as np
 
dt = np.dtype([('name', np.unicode_, 16),
               ('grades', np.float64, (2,))])
 
# x 是一個包含學生姓名和分數的結構化陣列。
# 學生姓名的資料型別是np.unicode_,分數的資料型別是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']

【相關推薦:Python3視訊教學

以上就是Python NumPy教學之資料型別物件的詳細內容,更多請關注TW511.COM其它相關文章!