Numpy學習02 資料型別

2021-10-24 23:28:35 字數 3503 閱讀 1584

2、建立資料型別

3、資料型別資訊

numpy 支援的資料型別比 python 內建的型別要多很多,基本上可以和 c 語言的資料型別對應上,其中部分型別對應為 python 內建的型別。下表列舉了常用 numpy 基本型別。為了區別於 python 原生的資料型別,bool、int、float、complex、str 等型別名稱末尾都加了 「_」:

型別備註

說明字元**

int8 = byte

8位整型

『i1』

int16 = short

16位整型

『i2』

int32 = intc

32位整型

『i4』

int_ = int64 = long = int0 = intp

64位整型

『i8』

型別備註

說明字元**

uint8 = ubyte

8位無符號整型

『u1』

uint16 = ushort

16位無符號整型

『u2』

uint32 = uintc

32位無符號整型

『u4』

uint64 = uintp = uint0 = uint

64位無符號整型

『u8』

型別備註

說明字元**

float16 = half

16位浮點型

『f2』

float32 = single

32位浮點型

『f4』

float_ = float64 = double

64位浮點型

『f8』

型別備註

說明字元**

bool_ = bool8

8位布林型別

『b1』

str_ = unicode_ = str0 = unicode

unicode 字串

『u』datetime64

日期時間型別

『m』timedelta64

表示兩個時間之間的間隔

『m』

print(numpy.dtype) 所顯示的都是 numpy 中的資料型別,而非 python原生資料型別。

實際上是 dtype 物件的例項

#dtype原始碼

class

dtype

(object):

def__init__

(self, obj, align=

false

, copy=

false):

pass

在這裡,我們新建乙個函式gendtype,用來生成檢視不同資料型別,然後集中測試:

def

gendtype

(str):

a = np.dtype(

str)

print

(a.type)#

print

(a.itemsize)

#集中測試

strlist =

['b1'

,'i1'

,'i2'

,'i4'

,'i8'

,'u1'

,'u2'

,'u4'

,'u8'

,'f2'

,'f4'

,'f8'

,'s'

,'s3'

,'u3'

]for x in strlist:

gendtype(x)

11

2481

2482

4803

12

我們注意到這裡itemsize的單位是位元組,值得注意的是型別為』s』的dtype大小為0,而』s3』大小為3,另外』u』的單個大小為4位元組,即32位。

python 的浮點數通常是64位浮點數,幾乎等同於 np.float64。

numpy和python整數型別的行為在整數溢位方面存在顯著差異,與 numpy 不同,python 的int 是靈活的。這意味著python整數可以擴充套件以容納任何整數並且不會溢位,這就是說numpy是有長度顯示的,那麼我們來看一下不同資料型別的顯示範圍。

#iinfo定義原始碼

class

iinfo

(object):

def__init__

(self, int_type)

:pass

defmin

(self)

:pass

defmax

(self)

:pass

可以看到iinfo類的初始化引數裡面有乙個int_type,是提供給呼叫者使用。

ii16 = np.iinfo(np.int16)

print

(ii16.

min)

print

(ii16.

max)

ii32 = np.iinfo(np.int32)

print

(ii32.

min)

print

(ii32.

max)

結果顯示:

-32768

32767

-2147483648

2147483647

同理,浮點數在numpy中也有範圍限制,先看定義:

#finfo定義原始碼

class

finfo

(object):

def_init

(self, dtype)

:

ff16 = np.finfo(np.float16)

print

(ff16.bits)

print

(ff16.

min)

print

(ff16.

max)

print

(ff16.eps)

ff32 = np.finfo(np.float32)

print

(ff32.bits)

print

(ff32.

min)

print

(ff32.

max)

print

(ff32.eps)

16

-65500.0

65500.0

0.000977 32

-3.4028235e+38

3.4028235e+38

1.1920929e-07

其中,eps是乙個很小的非負數,除法的分母不能為0的,不然會直接跳出顯示錯誤。使用eps將可能出現的零用eps來替換,這樣不會報錯。

Numpy 02 Numpy 資料型別和常用方法

目錄 二 基本用法及方法 從給的格式可以看出,這些都是在 numpy 上衍生的物件。ndarray numpy.ndarray dtype numpy.dtype array numpy.array 資料型別 numpy.ndarray 是 numpy 中一種基本的資料物件,它是一系列同型別資料的集...

NumPy 資料型別

numpy 支援比 python 更多種類的數值型別。下表顯示了 numpy 中定義的不同標量資料型別。序號資料型別及描述 1.bool 儲存為乙個位元組的布林值 真或假 2.int 預設整數,相當於 c 的long,通常為int32或int64 3.intc相當於 c 的int,通常為int32或...

NumPy 資料型別

numpy提供的數值型別,數值範圍比python提供的數值型別更大。numpy的數值型別,如下表所示 sn資料型別描述1 bool 布林值,取值ture false,占用乙個位元組 2int 是integer的預設型別。與c語言中的long型別相同,有可能是64位或32位。3intc 類似於c語言中...