numpy比python支援更多的資料型別,本文主要介紹哪些可用,以及如何修改陣列的資料型別。
支援的基本型別與c中的基本型別緊密相關:
由於許多具有平台相關的定義,因此提供了一組固定大小的別名:
numpy數值型別是dtype(資料型別)物件的例項,每個物件都有其獨特的特徵,匯入numpy後,可使用
在dtypes可作為np.bool_、p.float32等等
有5種基本的數值型別,分別代表布林(bool),整數(int),無符號整數(uint)浮點(float)和複數。名稱中帶有數字的,數字則表示該型別的位大小(即,需要多少位來表示記憶體中的單個值)。某些型別(例如int和 intp)具有不同的位大小,具體取決於平台(例如32位和64位計算機)。在與定址原始記憶體的低階**(例如c或fortran)介面時,應當考慮到這一點。
資料型別可以用作將python數字轉換為陣列標量的函式,數字的python序列至該型別的陣列,也可以用作許多numpy函式或方法接受的dtype關鍵字的引數。例如:
陣列型別也可以使用字元**來指代,主要是為了保持與諸如numeric之類的舊程式包的向後相容性。一些文件可能仍然引用這些文件,例如:
建議改為使用dtype物件。
要轉換陣列的型別,請使用.astype()方法(首選)或將型別本身用作函式。例如:
請注意,在上面,我們將python float物件用作dtype。 numpy知道int表示np.int_,bool表示np.bool_,float是np.float_,complex是np.complex_。 其它資料型別沒有python等效項。
要確定陣列的型別,就要檢視dtype屬性:
dtype物件還包含有關型別的資訊,例如其位寬和位元組順序。資料型別也可以間接用於查詢該型別的屬性,例如是否為整數:
numpy通常以陣列標量(具有關聯的dtype的標量)的形式返回陣列的元素。陣列標量與python標量不同,但是它們在大多數情況下可以互換使用(主要的例外是v2.x之前的python版本,其中整數陣列標量不能用作列表和元組的索引)。但有一些例外,例如,當**需要標量的非常特定的屬性時,或者當**專門檢查某個值是否為python標量時。通常,存在的問題很容易被顯式轉換陣列標量到python標量,採用相應的python型別功能固定的(例如,int,float,complex,str,unicode)。
使用陣列標量的主要優點是它們保留了陣列型別(例如,python可能沒有可用的匹配標量型別int16)。因此,使用陣列標量可以確保陣列和標量之間的行為相同,而不管該值是否在陣列內部。numpy標量也具有許多與陣列相同的方法。
當值需要的資料量大於資料型別中可用的記憶體時,numpy數值型別的固定大小可能會導致溢位錯誤。例如, 正確numpy.power評估64位整數,但給出32749整數的1874919424(不正確)。100 * 10 ** 8
numpy和python整數型別的行為對於整數溢位有顯著差異,並且可能會使期望numpy整數的行為類似於python int的人感到困惑。與numpy不同,python int的大小很靈活。這意味著python整數可以擴充套件以容納任何整數,並且不會溢位。
numpy提供numpy.iinfo並numpy.finfo分別驗證numpy整數和浮點值的最小值或最大值。
如果64位整數仍然太小,則結果可能會強制轉換為浮點數。浮點數提供了更大但不精確的可能值範圍。
如果你想學習python,但是找不到學習路徑和資源,歡迎來指尖程式設計。
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語言中...
Numpy資料型別
numpy是python的一種開源的數值計算擴充套件,是一些針對矩陣進行運算的模組。1.numpy介紹 2.numpy 學習筆記 3.python中的list和array的不同之處 4.python列表 numpy陣列與矩陣的區別 1.python中的list和np.array的不同之處 numpy...