NumPy資料型別


NumPy - 資料型別

NumPy 支援比 Python 更多種類的數值型別。 下表顯示了 NumPy 中定義的不同標量資料型別。

序號 資料型別及描述
1. bool_儲存為一個位元組的布林值(真或假)
2. int_預設整數,相當於 C 的long,通常為int32或int64
3. intc相當於 C 的int,通常為int32或int64
4. intp用於索引的整數,相當於 C 的size_t,通常為int32或int64
5. int8位元組(-128 ~ 127)
6. int1616 位整數(-32768 ~ 32767)
7. int3232 位整數(-2147483648 ~ 2147483647)
8. int6464 位整數(-9223372036854775808 ~ 9223372036854775807)
9. uint88 位無符號整數(0 ~ 255)
10. uint1616 位無符號整數(0 ~ 65535)
11. uint3232 位無符號整數(0 ~ 4294967295)
12. uint6464 位無符號整數(0 ~ 18446744073709551615)
13. float_float64的簡寫
14. float16半精度浮點:符號位,5 位指數,10 位尾數
15. float32單精度浮點:符號位,8 位指數,23 位尾數
16. float64雙精度浮點:符號位,11 位指數,52 位尾數
17. complex_complex128的簡寫
18. complex64複數,由兩個 32 位浮點表示(實部和虛部)
19. complex128複數,由兩個 64 位浮點表示(實部和虛部)

NumPy 數位型別是dtype(資料型別)物件的範例,每個物件具有唯一的特徵。 這些型別可以是np.bool_,np.float32等。

資料型別物件 (dtype)

資料型別物件描述了對應於陣列的固定記憶體塊的解釋,取決於以下方面:

  • 資料型別(整數、浮點或者 Python 物件)

  • 資料大小

  • 位元組序(小端或大端)

  • 在結構化型別的情況下,欄位的名稱,每個欄位的資料型別,和每個欄位佔用的記憶體塊部分。

  • 如果資料型別是子序列,它的形狀和資料型別。

位元組順序取決於資料型別的字首<或>。<意味著編碼是小端(最小有效位元組儲存在最小地址中)。>意味著編碼是大端(最大有效位元組儲存在最小地址中)。

dtype可由一下語法構造:

numpy.dtype(object, align, copy)

引數為:

  • Object:被轉換為資料型別的物件。

  • Align:如果為true,則向欄位新增間隔,使其類似 C 的結構體。

  • Copy? 生成dtype物件的新副本,如果為flase,結果是內建資料型別物件的參照。

範例 1

# 使用陣列標量型別  
import numpy as np 
dt = np.dtype(np.int32)  
print dt

輸出如下:

int32

範例 2

#int8,int16,int32,int64 可替換為等價的字串 'i1','i2','i4',以及其他。  
import numpy as np 

dt = np.dtype('i4')  
print dt

輸出如下:

int32

範例 3

# 使用端記號  
import numpy as np 
dt = np.dtype('>i4')  
print dt

輸出如下:

>i4

下面的例子展示了結構化資料型別的使用。 這裡宣告了欄位名稱和相應的標量資料型別。

範例 4

# 首先建立結構化資料型別。  
import numpy as np 
dt = np.dtype([('age',np.int8)])  
print dt

輸出如下:

[('age', 'i1')]

範例 5

# 現在將其應用於 ndarray 物件  
import numpy as np 

dt = np.dtype([('age',np.int8)]) 
a = np.array([(10,),(20,),(30,)], dtype = dt)  
print a

輸出如下:

[(10,) (20,) (30,)]

範例 6

# 檔案名稱可用於存取 age 列的內容  
import numpy as np 

dt = np.dtype([('age',np.int8)]) 
a = np.array([(10,),(20,),(30,)], dtype = dt)  
print a['age']

輸出如下:

[10 20 30]

範例 7

以下範例定義名為 student 的結構化資料型別,其中包含字串欄位name,整數位段age和浮點欄位marks。 此dtype應用於ndarray物件。

import numpy as np 
student = np.dtype([('name','S20'),  ('age',  'i1'),  ('marks',  'f4')])  
print student

輸出如下:

[('name', 'S20'), ('age', 'i1'), ('marks', '<f4')])

範例 8

import numpy as np 

student = np.dtype([('name','S20'),  ('age',  'i1'),  ('marks',  'f4')]) 
a = np.array([('abc',  21,  50),('xyz',  18,  75)], dtype = student)  
print a

輸出如下:

[('abc', 21, 50.0), ('xyz', 18, 75.0)]

每個內建型別都有一個唯一定義它的字元程式碼:

  • 'b':布林值

  • 'i':符號整數

  • 'u':無符號整數

  • 'f':浮點

  • 'c':複數浮點

  • 'm':時間間隔

  • 'M':日期時間

  • 'O':Python 物件

  • 'S', 'a':位元組串

  • 'U':Unicode

  • 'V':原始資料(void)