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)